spring开发_Spring+Struts2
项目结构:
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相关推荐
- 关于如何利用Struts2,Hibernate,Spring开发电子商业汇票系统
关于如何利用Struts2,Hibernate,Spring开发电子商业汇票系统. 首先先说说电子商业汇票的种类: 1.电子银行承兑汇票 2.电子商业承兑汇票 另外电子商业汇票与纸票的区别: 电子商业 ...
- spring一站式开发_Spring开发人员知道的一件事
spring一站式开发 在最近的(核心)Spring框架培训课程中,有人问我:"(Java)Spring开发人员应该知道的一件事是什么?" 这个问题使我措手不及. 是的,(核心)S ...
- Spring MVC和Struts2
Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比<Struts1和Struts2>,这篇将 ...
- Spring、Spring MVC、Struts2、、优缺点整理
Spring 及其优点 大部分项目都少不了Spring的身影,为什么大家对他如此青睐,而且对他的追捧丝毫没有减退之势呢 Spring是什么: Spring是一个轻量级的DI和AOP容器框架. 说它轻量 ...
- 搭建Spring开发环境并编写第一个Spring小程序
一.前面,我写了一篇Spring框架的基础知识文章,里面没讲到如何配置Spring开发环境,今天就来讲一下,如果大家不知道怎么下载Spring软件包的话,可以看我那篇文章: http://blog.c ...
- 对比Spring MVC和Struts2
Spring MVC和Struts2框架都是时下比较流行的框架,于是乎很多人就把两者拿来比较,到底孰优孰劣.本文,我们就来对比Spring MVC和Struts2. 一.相同点 Spring MVC和 ...
- 利用Maven搭建Spring开发环境 【转】
2019独角兽企业重金招聘Python工程师标准>>> 一. 概要说明 最近几天在测试Spring3.0的AOP功能,在测试功能之前,首先是要搭建出Spring3.0的开发功能. ...
- 学习spring2--跟我一起学Spring 3(3)–使用Spring开发第一个HelloWorld应用
http://www.importnew.com/13246.html 首页 所有文章 资讯 Web 架构 基础技术 书籍 教程 我要投稿 更多频道 » - 导航条 -首页所有文章资讯Web架构基础技 ...
- Spring开发环境搭建
在spring开发中,我们要根据不同的情况来导入不同的jar包,如果我们要使用的是spring的ioc与di,那么对于ioc与di,我们只需要使用spring的核心功能. 1. beans相关 2. ...
最新文章
- Java基础知识强化之IO流笔记32:转换流之OutputStreamWriter的使用
- json支持的最大长度_Swifter.Json 可能是 .Net 平台迄今为止性能最佳的 Json 序列化库【开源】...
- Windows安装MySQL 5.5完整步骤图解
- 【tomcat】调整内存大小
- 国计算机学会聘为全国青少年信,中国计算机学会将继续开展NOI相关活动,暂未作出重新申报的决议...
- php 二进制权限,基于二进制位的权限控制(数据库里的二进制)
- 满足多个条件的JAVA语句_关于Java:关于具有多个条件的If语句的快速问题
- 【报告分享】二次元衍生创作行业报告.pdf(附下载链接)
- 作用域闭包,你真的懂了吗?
- Java集合——题目
- 如何使用Java进行简单爬虫
- MVC过滤器详解 面向切面编程(AOP)
- nginx location 斜杠_斜杠青年 菲斯塔车主实录
- c语言sqart函数格式,2019-07-29 复习C语言入门知识
- 类似123321特殊数的输出
- java新手,写了个简单的计算器,求高手指点一二
- 菜鸟带你使用JieCaoMediaPlayer播放本地视频
- Java语言有哪些特点?
- 安装与使用IPy模块
- 通过docker搭建lamp+wordpress+ELK监控