项目结构:

http://www.cnblogs.com/hongten/gallery/image/112920.html

项目类库:

http://www.cnblogs.com/hongten/gallery/image/112921.html

数据库结构:

http://www.cnblogs.com/hongten/gallery/image/112926.html

建表sql:

1 CREATE TABLE `spring_struts` (2   `id` int(11) NOT NULL AUTO_INCREMENT,3   `username` varchar(20) COLLATE utf8_bin DEFAULT NULL,4   `password` varchar(20) COLLATE utf8_bin DEFAULT NULL,5   PRIMARY KEY (`id`)6 ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

/spring_struts2/src/com/b510/app/action/LoginAction.java

 1 package com.b510.app.action; 2  3 import com.b510.app.service.MyService; 4 import com.opensymphony.xwork2.Action; 5  6 public class LoginAction implements Action { 7     // 下面是用于封装用户请求参数的两个属性 8     private String username; 9     private String password;10     // 用于封装处理结果的属性11     private String tip;12     // 系统所用的业务逻辑组件13     private MyService ms;14 15     // 设置注入业务逻辑组件所必需的setter方法16     public void setMs(MyService ms) {17         this.ms = ms;18     }19 20     // username属性的setter和getter方法21     public void setUsername(String username) {22         this.username = username;23     }24 25     public String getUsername() {26         return this.username;27     }28 29     // password属性所必需的setter和getter方法30     public void setPassword(String password) {31         this.password = password;32     }33 34     public String getPassword() {35         return this.password;36     }37 38     // tip属性的getter和setter方法39     public void setTip(String tip) {40         this.tip = tip;41     }42 43     public String getTip() {44         return this.tip;45     }46 47     // 处理用户请求的execute方法48     public String execute() throws Exception {49         // 调用业务逻辑组件的valid方法来50 // 验证用户输入的用户名和密码是否正确51         if (ms.valid(getUsername(), getPassword())) {52             setTip("哈哈," + getUsername() + "登录成功!");53             return SUCCESS;54         } else {55             return ERROR;56         }57     }58 }

/spring_struts2/src/com/b510/app/service/MyService.java

 1 package com.b510.app.service; 2  3 /** 4  * 校验数据 5  *  6  * @author Hongten 7  *  8  */ 9 public interface MyService {10     boolean valid(String username, String pass);11 }

/spring_struts2/src/com/b510/app/service/impl/MyServiceImpl.java

 1 package com.b510.app.service.impl; 2  3 import com.b510.app.service.MyService; 4 import com.b510.dao.PersonDAO; 5  6 public class MyServiceImpl implements MyService { 7  8     private PersonDAO personDAO; 9 10     public PersonDAO getPersonDAO() {11         return personDAO;12     }13 14     public void setPersonDAO(PersonDAO personDAO) {15         this.personDAO = personDAO;16     }17 18     public boolean valid(String username, String pass) {19         // 此处只是简单示范,故直接判断用户名、密码20 // 是否符合要求21         if (personDAO.isExit(username, pass)) {22             return true;23         }24         return false;25     }26 }

/spring_struts2/src/com/b510/dao/PersonDAO.java

 1 package com.b510.dao; 2  3 import java.util.List; 4  5 import com.b510.entity.Person; 6  7 /** 8  * PersonDAO抽象类 9  * 10  * @author Hongten11  * 12  */13 public interface PersonDAO {14 15     /**16      * 保存数据17 */18     public abstract void save();19 20     /**21      * 更新数据22 */23     public abstract void update();24 25     /**26      * 删除数据27 */28     public abstract void delete();29 30     /**31      * 根据id号,获取一条记录32      * 33      * @param id34      *            id号35      * @return 返回一条记录36 */37     public abstract Person getPerson(int id);38 39     /**40      * 获取所有记录41      * 42      * @return 返回所有记录43 */44     public abstract List<Person> getPersons();45 46     /**47      * 根据username,password查询数据库中是否存在此记录48      * 49      * @param username50      *            用户名51      * @param password52      *            密码53      * @return 返回true,表示存在,返回false,表示不存在54 */55     public abstract boolean isExit(String username, String password);56 57 }

/spring_struts2/src/com/b510/dao/impl/PersonDAOImpl.java

在这里我们只是实现从数据库中查询出一条记录,所以其他方法并没有实现。

 1 package com.b510.dao.impl; 2  3 import java.sql.Connection; 4 import java.sql.ResultSet; 5 import java.sql.SQLException; 6 import java.sql.Statement; 7 import java.util.Date; 8 import java.util.List; 9 10 import javax.sql.DataSource;11 12 import com.b510.dao.PersonDAO;13 import com.b510.entity.Person;14 15 public class PersonDAOImpl implements PersonDAO {16 17     private DataSource dataSource;18 19     public DataSource getDataSource() {20         return dataSource;21     }22 23     public void setDataSource(DataSource dataSource) {24         this.dataSource = dataSource;25     }26 27     public void save() {28 29     }30 31     public void update() {32 33     }34 35     public void delete() {36 37     }38 39     public Person getPerson(int id) {40         Person person = null;41         return person;42     }43 44     public List<Person> getPersons() {45         List<Person> list = null;46         return list;47     }48 49     public boolean isExit(String username, String password) {50         String sql = "select * from spring_struts where username=" + "'"51                 + username + "'" + " and password=" + "'" + password + "'";52         Connection conn = null;53         boolean flag = false;54         try {55             conn = dataSource.getConnection();56             Statement statement = conn.prepareStatement(sql);57             ResultSet rs = statement.executeQuery(sql);58             if (rs.next()) {59                 flag = true;60             }61         } catch (SQLException e) {62             e.printStackTrace();63         } finally {64             try {65                 conn.close();66             } catch (SQLException e) {67                 e.printStackTrace();68             }69         }70         return flag;71 72     }73 }

/spring_struts2/src/com/b510/entity/Person.java

 1 package com.b510.entity; 2  3 /** 4  * 定义一个Entity 5  *  6  * @author Hongten 7  *  8  */ 9 public class Person {10     /**11      * id号12 */13     private int id;14     /**15      * 用户名16 */17     private String username;18     /**19      * 密码20 */21     private String password;22 23     public Person() {24     }25 26     public Person(int id, String username, String password) {27         super();28         this.id = id;29         this.username = username;30         this.password = password;31     }32 33     public int getId() {34         return id;35     }36 37     public String getPassword() {38         return password;39     }40 41     public String getUsername() {42         return username;43     }44 45     public void setId(int id) {46         this.id = id;47     }48 49     public void setPassword(String password) {50         this.password = password;51     }52 53     public void setUsername(String username) {54         this.username = username;55     }56 }

/spring_struts2/src/jdbc.properties

1 driverClassName=org.gjt.mm.mysql.Driver2 url=jdbc\:mysql\://localhost\:3307/spring?useUnicode\=true&characterEncoding\=UTF-83 username=root4 password=root5 initialSize=16 maxActive=3007 maxIdle=28 minIdle=1

/spring_struts2/src/struts.xml

 1 <?xml version="1.0" encoding="GBK"?> 2     <!-- 指定Struts 2配置文件的DTD信息 --> 3 <!DOCTYPE struts PUBLIC 4     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 5     "http://struts.apache.org/dtds/struts-2.1.7.dtd"> 6     <!-- Struts 2配置文件的根元素 --> 7 <struts> 8     <!-- 配置了系列常量 --> 9     <constant name="struts.i18n.encoding" value="GBK" />10     <constant name="struts.devMode" value="true" />11     <include file="user-login.xml"></include>12 </struts>

/spring_struts2/src/user-login.xml

 1 <?xml version="1.0" encoding="GBK"?> 2 <!-- 指定Struts 2配置文件的DTD信息 --> 3 <!DOCTYPE struts PUBLIC 4     "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" 5     "http://struts.apache.org/dtds/struts-2.1.7.dtd"> 6 <!-- Struts 2配置文件的根元素 --> 7 <struts> 8     <package name="login" extends="struts-default"> 9         <!-- 定义处理用户请求的Action,该Action的class属性不是实际处理类10             , 而是Spring容器中的Bean实例-->11         <action name="loginPro" class="loginAction">12             <!-- 为两个逻辑视图配置视图页面 -->13             <result name="error">/WEB-INF/content/error.jsp</result>14             <result name="success">/WEB-INF/content/welcome.jsp</result>15         </action>16         <!-- 让用户直接访问该应用时列出所有视图页面 -->17         <action name="*">18             <result>/WEB-INF/content/{1}.jsp</result>19         </action>20     </package>21 </struts>

/spring_struts2/WebRoot/WEB-INF/applicationContext.xml

 1 <?xml version="1.0" encoding="GBK"?> 2     <!-- Spring配置文件的根元素,使用spring-beans-3.0.xsd语义约束 --> 3 <beans xmlns="http://www.springframework.org/schema/beans" 4     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 5     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 6     xsi:schemaLocation="http://www.springframework.org/schema/beans 7            http://www.springframework.org/schema/beans/spring-beans-2.5.xsd 8            http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd 9            http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd10            http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd">11     <context:annotation-config />12 13     <!-- 启动@AspectJ支持14     <aop:aspectj-autoproxy />15 -->16     <!-- 读取jdbc.properties配置文件 -->17     <context:property-placeholder location="classpath:jdbc.properties" />18 19     <!-- 配置数据源 -->20     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"21         destroy-method="close">22         <property name="driverClassName" value="${driverClassName}" />23         <property name="url" value="${url}" />24         <property name="username" value="${username}" />25         <property name="password" value="${password}" />26         <!-- 连接池启动时的初始值 -->27         <property name="initialSize" value="${initialSize}" />28         <!-- 连接池的最大值 -->29         <property name="maxActive" value="${maxActive}" />30         <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 -->31         <property name="maxIdle" value="${maxIdle}" />32         <!--  最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 -->33         <property name="minIdle" value="${minIdle}" />34     </bean>35 36     <!-- model -->37     <bean id="person" class="com.b510.entity.Person">38     </bean>39 40     <bean id="mySpringAdvice" class="com.b510.aspect.MySpringAdvice"></bean>41 42 43     <bean id="myService" class="com.b510.app.service.impl.MyServiceImpl">44         <property name="personDAO" ref="personDAO"></property>45     </bean>46 47     <bean id="personDAO" class="com.b510.dao.impl.PersonDAOImpl">48         <property name="dataSource" ref="dataSource"></property>49     </bean>50 51     <!-- controller -->52     <bean id="loginAction" class="com.b510.app.action.LoginAction"53         scope="prototype">54         <property name="ms" ref="myService"></property>55     </bean>56 57     <!--58         <aop:config> <aop:aspect id="springAdviceAspect" ref="mySpringAdvice">59         <aop:after-returning method="makeLog" pointcut="execution(*60         com.b510.service.impl.*.*(..))" returning="pjp" /> </aop:aspect>61         </aop:config>62 -->63 </beans>

/spring_struts2/WebRoot/WEB-INF/web.xml

 1 <?xml version="1.0" encoding="GBK"?> 2 <web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 4     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 5     version="3.0"> 6     <!-- 指定多个配置文件 --> 7     <context-param> 8         <!-- 参数名称为:contextConfigLocation --> 9         <param-name>contenxtConfigLocation</param-name>10         <!-- 多个配置文件之间用","隔开 -->11         <param-value>/WEB-INF/applicationContext.xml</param-value>12 13     </context-param>14     <!-- 使用ContextLoaderListener初始化Spring容器 -->15     <listener>16         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>17     </listener>18     <!-- 定义Struts 2的FilterDispathcer的Filter -->19     <filter>20         <filter-name>struts2</filter-name>21         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>22     </filter>23     <!-- FilterDispatcher用来初始化Struts 2并且处理所有的WEB请求。 -->24     <filter-mapping>25         <filter-name>struts2</filter-name>26         <url-pattern>/*</url-pattern>27     </filter-mapping>28 </web-app>

jsp页面:

/spring_struts2/WebRoot/WEB-INF/content/error.jsp

 1 <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> 2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 3     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 4 <html xmlns="http://www.w3.org/1999/xhtml"> 5 <head> 6     <title>错误页面</title> 7 </head> 8 <body> 9     您不能登录!10 </body>11 </html>

/spring_struts2/WebRoot/WEB-INF/content/login.jsp

 1 <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> 2 <%@taglib prefix="s" uri="/struts-tags"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 4     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head> 7     <title>登录页面</title> 8 </head> 9 <body>10 <h3>用户登录</h3>11 <s:form action="loginPro">12     <s:textfield name="username" label="用户名"/>13     <s:password name="password" label="密码"/>14     <tr align="center">15         <td colspan="2">16         <s:submit value="登录" theme="simple"/>17         <s:reset value="重设" theme="simple"/>18         </td>19     </tr>20 </s:form>21 </body>22 </html>

/spring_struts2/WebRoot/WEB-INF/content/welcome.jsp

 1 <%@ page contentType="text/html; charset=GBK" language="java" errorPage="" %> 2 <%@taglib prefix="s" uri="/struts-tags"%> 3 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 4     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 5 <html xmlns="http://www.w3.org/1999/xhtml"> 6 <head> 7     <title>成功页面</title> 8 </head> 9 <body>10     您已经登录!11     <s:property value="tip"/>12 </body>13 </html>

显示效果:

登录界面:

http://www.cnblogs.com/hongten/gallery/image/112923.html

错误界面:

http://www.cnblogs.com/hongten/gallery/image/112924.html

登录成功界面:

http://www.cnblogs.com/hongten/gallery/image/112925.html

spring开发_Spring+Struts2相关推荐

  1. 关于如何利用Struts2,Hibernate,Spring开发电子商业汇票系统

    关于如何利用Struts2,Hibernate,Spring开发电子商业汇票系统. 首先先说说电子商业汇票的种类: 1.电子银行承兑汇票 2.电子商业承兑汇票 另外电子商业汇票与纸票的区别: 电子商业 ...

  2. spring一站式开发_Spring开发人员知道的一件事

    spring一站式开发 在最近的(核心)Spring框架培训课程中,有人问我:"(Java)Spring开发人员应该知道的一件事是什么?" 这个问题使我措手不及. 是的,(核心)S ...

  3. Spring MVC和Struts2

    Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比<Struts1和Struts2>,这篇将 ...

  4. Spring、Spring MVC、Struts2、、优缺点整理

    Spring 及其优点 大部分项目都少不了Spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量 ...

  5. 搭建Spring开发环境并编写第一个Spring小程序

    一.前面,我写了一篇Spring框架的基础知识文章,里面没讲到如何配置Spring开发环境,今天就来讲一下,如果大家不知道怎么下载Spring软件包的话,可以看我那篇文章: http://blog.c ...

  6. 对比Spring MVC和Struts2

    Spring MVC和Struts2框架都是时下比较流行的框架,于是乎很多人就把两者拿来比较,到底孰优孰劣.本文,我们就来对比Spring MVC和Struts2. 一.相同点 Spring MVC和 ...

  7. 利用Maven搭建Spring开发环境 【转】

    2019独角兽企业重金招聘Python工程师标准>>> 一.   概要说明 最近几天在测试Spring3.0的AOP功能,在测试功能之前,首先是要搭建出Spring3.0的开发功能. ...

  8. 学习spring2--跟我一起学Spring 3(3)–使用Spring开发第一个HelloWorld应用

    http://www.importnew.com/13246.html 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 -首页所有文章资讯Web架构基础技 ...

  9. Spring开发环境搭建

    在spring开发中,我们要根据不同的情况来导入不同的jar包,如果我们要使用的是spring的ioc与di,那么对于ioc与di,我们只需要使用spring的核心功能. 1. beans相关 2. ...

最新文章

  1. Java基础知识强化之IO流笔记32:转换流之OutputStreamWriter的使用
  2. json支持的最大长度_Swifter.Json 可能是 .Net 平台迄今为止性能最佳的 Json 序列化库【开源】...
  3. Windows安装MySQL 5.5完整步骤图解
  4. 【tomcat】调整内存大小
  5. 国计算机学会聘为全国青少年信,中国计算机学会将继续开展NOI相关活动,暂未作出重新申报的决议...
  6. php 二进制权限,基于二进制位的权限控制(数据库里的二进制)
  7. 满足多个条件的JAVA语句_关于Java:关于具有多个条件的If语句的快速问题
  8. 【报告分享】二次元衍生创作行业报告.pdf(附下载链接)
  9. 作用域闭包,你真的懂了吗?
  10. Java集合——题目
  11. 如何使用Java进行简单爬虫
  12. MVC过滤器详解 面向切面编程(AOP)
  13. nginx location 斜杠_斜杠青年 菲斯塔车主实录
  14. c语言sqart函数格式,2019-07-29 复习C语言入门知识
  15. 类似123321特殊数的输出
  16. java新手,写了个简单的计算器,求高手指点一二
  17. 菜鸟带你使用JieCaoMediaPlayer播放本地视频
  18. Java语言有哪些特点?
  19. 安装与使用IPy模块
  20. 通过docker搭建lamp+wordpress+ELK监控

热门文章

  1. 毕业设计(二十四)---退出 博客 清除session
  2. Struts2+Spring3.1+Hibernate3.3的整个项目
  3. 详解Ubuntu10.10下Qt连接Mysql数据库
  4. 给Visual Studio 2010中文版添加Windows Phone 7模板
  5. vCenter 部件关系简介 网络原理
  6. 30天敏捷生活(9-11):调整30天的节奏
  7. uva10401Injured Queen Problem(递推)
  8. linux密码修改实验
  9. 【JS】两种计时器/定时器
  10. 基于weka实现的神经网络算法实现