最全Struts2+Spring3.0+MyBatis3.0平台搭建
Struct2、Hibernate3、Spring3框架搭建实战
Struct2、Hibernate3、Spring3框架搭建实战采⽤⽬前最新的struts-2.3.1.2、hibernate3.6.10.Final、spring-framework-3.1.1.RELEASE开发包,以及eclipse-jee-indigo-SR2-win32、apache-tomcat-7.0.27服务器、JDK6和mysql5做开发环境,参考了前辈的⼀篇相关⽂章,改正了其中的错误和疏漏,克服了公司分配的“新”机器每⼩时⾃动重启三次的困难,终于把环境给搭好了。
整个过程中遵循的⼀个原则是,避免引⼊⽤不到的jar包,以求搭建⼀个最⼩的SSH 运⾏环境。
⾸先创建⼀个Dynamic web project 输⼊任意名字如SSHBase。
第⼀步:加载Spring环境我们需要引⼊的包有:org.springframework.asm-3.1.1.RELEASE.jarorg.springframework.beans-3.1.1.RELEASE.jarorg.springframework.context-3.1.1.RELEASE.jarorg.springframework.core-3.1.1.RELEASE.jarorg.springframework.expression-3.1.1.RELEASE.jarorg.springframework.jdbc-3.1.1.RELEASE.jarorg.springframework.web-3.1.1.RELEASE.jarorg.springframework.orm-3.1.1.RELEASE.jar由于spring默认开启了⽇志,还需要加⼊commons-logging的jar包,否则会报错。
建议不要⼀次性加⼊应该先加最核⼼的运⾏代码看缺少什么加什么,这样就不会加多余的包进来了,spring3已经把包按功能分开,不像以前⼀个包,这样更灵活,只要运⾏我们需要的功能,⽽没⽤到的就不⽤在硬性的添加进来。
Struts2+Spring3+Hibernate4+Maven整合
Struts2+Spring3+Hibernate4+Maven整合目录1.建立Maven工程2.搭建Spring33.搭建Struts2并整合Spring34.搭建Hibernate4并整合Spring3内容1.建立Maven工程第一步:第二步:第三步:第四步:注意:这里的JDK要选择默认的,这样别人在使用的时候,如何JDk不一致的话也不会出错,如下图所示:第五步:Maven标准目录src/main/javasrc/main/resourcessrc/test/javasrc/test/resources第六步:发布项目:Maven install清除编译过的项目:Maven cleanOK,Mean 工程创建成功!2. 搭建 Spring3(1)下载Spring3需要的jar包1.spring-core2.spring-context3.spring-jdbc4.spring-beans5.spring-web6.spring-expression7.spring-orm在pom.xml中编写Spring3需要的包,maven会自动下载这些包。
<!-- spring3 --><dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>3.1.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>3.1.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>3.1.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>3.1.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>3.1.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>3.1.2.RELEASE</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-orm</artifactId><version>3.1.2.RELEASE</version></dependency>(2)编写Spring配置文件<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd /schema/context/schema/context/spring-context-3.0.xsd "><!-- 引入属性文件 --><context:property-placeholderlocation="classpath:config.properties"/><!-- 自动扫描dao和service包(自动注入) --><context:component-scan base-package="com.zc.dao,com.zc.service" /></beans>(3)编写测试首先,在src/main/java中创建com.zc.service包,在包中编写一个UserService 接口,代码如下:package com.zc.service;/*** 测试* @author ZC* */public interface UserService {public void test();}然后,在src/main/java中创建com.zc.service.imple包,在包中编写UserServiceImple 实现类,代码如下:package com.zc.service.impl;import org.springframework.stereotype.Service;import erService;@Service("userService")public class UserServiceImpl implements UserService {@Overridepublic void test() {System.out.println("Hello World!");}}注意:@Service("userService")使用junit注解完成service 注入,所以还要在pom.xml中配置junit注解。
搭建spring+mybatis+struts2环境的配置文件
搭建spring+mybatis+struts2环境的配置⽂件1、web.xml配置1<?xml version="1.0" encoding="UTF-8"?>2<web-app xmlns:xsi="/2001/XMLSchema-instance" xmlns="/xml/ns/javaee" xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" 3<display-name>mgr</display-name>4<welcome-file-list>5<welcome-file>index.html</welcome-file>6<welcome-file>index.htm</welcome-file>7<welcome-file>index.jsp</welcome-file>8<welcome-file>default.html</welcome-file>9<welcome-file>default.htm</welcome-file>10<welcome-file>default.jsp</welcome-file>11</welcome-file-list>121314<context-param>15<param-name>contextConfigLocation</param-name>16<param-value>17 classpath:config/spring_config.xml<!-- spring整合配置 -->18 classpath:config/spring_quartz.xml<!-- 配置定时任务时使⽤ -->19</param-value>20</context-param>21<!-- 设置由Sprng载⼊的Log4j配置⽂件位置,默认为src下,如果修改配置⽂件路径则需要修改 -->22<!-- <context-param>23 <param-name>log4jConfigLocation</param-name>24 <param-value>classpath:config/log4j.properties</param-value>25 </context-param>26 Spring刷新Log4j配置⽂件变动的间隔,单位为毫秒27 <context-param>28 <param-name>log4jRefreshInterval</param-name>29 <param-value>10000</param-value>30 </context-param>31 <listener>32 <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>33 </listener> -->3435<!-- Spring监听器 -->36<listener>37<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>38</listener>39<listener>40<listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>41</listener>424344<!-- Struts2 -->45<filter>46<filter-name>struts2</filter-name>47<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>48<!-- 默认strut.xml放在src⽬录下,如需修改,需要增加init配置 -->49</filter>50<filter-mapping>51<filter-name>struts2</filter-name>52<url-pattern>/*</url-pattern>53</filter-mapping>5455<session-config>56<session-timeout>30</session-timeout>57</session-config>5859</web-app>2、spring_config.xml配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance" xmlns:aop="/schema/aop" xmlns:context="/schema/cont /schema/beans /schema/beans/spring-beans.xsd/schema/context /schema/context/spring-context-4.1.xsd/schema/aop /schema/aop/spring-aop-4.1.xsd/schema/tx /schema/tx/spring-tx-4.1.xsd"><!-- 加载配置⽂件 --><bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="locations"><list><value>classpath:config/jdbc.properties</value><value>classpath:config/mail.properties</value></list></property></bean><!-- 1、配置数据源 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"><!-- 配置基本属性 --><property name="driverClassName" value="${jdbc.mysql.driverclassname}"/><property name="url" value="${jdbc.mysql.url}"/><property name="username" value="${ername}"/><property name="password" value="${jdbc.mysql.password}"/><!-- 配置连接初始化⼤⼩、最⼩、最⼤ --><property name="initialSize" value="5"/><property name="minIdle" value="5"/><property name="maxActive" value="20"/><!-- 配置获取连接等待超时的时间 --><property name="maxWait" value="60000"/><!-- 配置间隔多久才进⾏⼀次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="3600000"/><!-- 配置⼀个连接在池中最⼩⽣存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="3600000"/><!-- 在每次空闲连接回收器线程(如果有)运⾏时检查的连接数量--><property name="numTestsPerEvictionRun" value="3"/><!-- 打开PSCache,并且指定每个连接上PSCache的⼤⼩ --><property name="poolPreparedStatements" value="true"/><!-- ⽤来检测连接是否有效的sql,要求是⼀个查询语句。
Eclipse中struts2+spring3+mybatis3环境搭建
Eclipse中struts2+spring3+mybatis3环境搭建公司要用struts2 + spring3 + mybatis3做项目,尝试着在家鼓捣了一下。
1. 框架下载struts2: 下载 struts-2.3.14-all.zipspring3: 下载 spring-framework-3.2.2-dist.zipmybatis3: /p/mybatis/ 下载 mybatis-3.2.2.zip 和 mybatis-spring-1.2.0-bundle.zip2. 建示例工程在Eclipse中新建示例工程,步骤就不详述了,我把工程取名为ssm_example。
3. struts2配置3.1 src下创建struts.xml配置文件[html] view plaincopy1.<?xml version="1.0" encoding="UTF-8"?>2.<!DOCTYPE struts PUBLIC3."-//Apache Software Foundation//DTD Struts Configuration 2.0//E N"4."dtds/struts-2.0.dtd">5.6.<struts>7.8.<constant name="struts.devMode" value="true" />9.10.<package name="basic" extends="struts-default">11.<action name="index" class="cn.ssm.sample.action.In dexAction" method="execute">12.<result name="success">/WEB-INF/jsp/Index.jsp</result>13.</action>14.</package>15.16.</struts>3.2 修改web.xml[html] view plaincopy1.<filter>2.<filter-name>struts2</filter-name>3.<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndEx ecuteFilter</filter-class>4.</filter>5.6.<filter-mapping>7.<filter-name>struts2</filter-name>8.<url-pattern>/*</url-pattern>9.</filter-mapping>3.3 从解压的struts-2.3.14-all的lib文件夹下,挑选了必须的和比较常用的jar包,放入WEB-INF/lib的文件夹下[html] view plaincopymons-fileupload-1.2.2.jarmons-io-2.0.1.jarmons-lang-2.4.jarmons-lang3-3.1.jarmons-logging-1.1.1.jarmons-logging-api-1.1.jar7.freemarker-2.3.19.jar8.javassist-3.11.0.GA.jar9.ognl-3.0.6.jar10.struts2-core-2.3.14.jar11.xwork-core-2.3.14.jar3.4 建个测试用的IndexAction.java和Index.jsp[java] view plaincopy1.package cn.ssm.sample.action;2.3.import com.opensymphony.xwork2.ActionSupport;4.5.public class IndexAction extends ActionSupport{6.7.@Override8.public String execute() throws Exception {9.// TODO Auto-generated method stub10.return super.execute();11.}12.13.}[html] view plaincopy1.<%@ page language="java" contentType="text/html; cha rset=UTF-8"2.pageEncoding="UTF-8"%>3.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "/TR/html4/loose.dtd ">4.<html>5.<head>6.<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">7.<title>Insert title here</title>8.</head>9.<body>10.Hello world!11.</body>12.</html>3.5 测试struts2运行服务,在浏览器输入,如果配置没有错误,那么会出现Hello world!4. spring3配置4.1 config/spring下创建applicationContext.xml配置文件[html] view plaincopy1.<?xml version="1.0" encoding="UTF-8"?>2.3.<beans xmlns="/schema/beans"4.xmlns:xsi="/2001/XMLSchema-instance" xmlns:aop="/schema/aop"5.xmlns:tx="/schema/tx" xmlns:jdbc="/schema/jdbc"6.xmlns:context="/schema/context"7.xsi:schemaLocation="8./schema/context /schema/context/spring-context-3.0.xsd9./schema/beans /schema/beans/spring-beans-3.0.xsd10./schema/jdbc /schema/jdbc/spring-jdbc-3.0.xsd11./schema/tx /schema/tx/spring-tx-3.0.xsd12./schema/aop /schema/aop/spring-aop-3.0.xsd">13.14.<!-- enable component scanning (beware that this does not enable mapper15.scanning!) -->16.<context:component-scan17.base-package="cn.ssm.sample.action,cn.ssm.sample.service" />18.19.<!-- enable autowire -->20.<context:annotation-config />21.22.<!-- enable transaction demarcation with annotations -->23.<tx:annotation-driven />24.25.</beans>4.2 修改web.xml[html] view plaincopy1.<listener>2.<listener-class>org.springframework.web.context.ContextLoaderListener </listener-class>3.</listener>4.<context-param>5.<param-name>contextConfigLocation</param-name>6.<param-value>/WEB-INF/classes/applicationContext.xml7.</param-value>8.</context-param>4.3 添加相关jar包[html] view plaincopy1.aopalliance-1.0.jar2.spring-aop-3.2.2.RELEASE.jar3.spring-beans-3.2.2.RELEASE.jar4.spring-context-3.2.2.RELEASE.jar5.spring-core-3.2.2.RELEASE.jar6.spring-expression-3.2.2.RELEASE.jar7.spring-jdbc-3.2.2.RELEASE.jar8.spring-tx-3.2.2.RELEASE.jar9.spring-web-3.2.2.RELEASE.jar10.struts2-spring-plugin-2.3.14.jar4.4 修改struts.xml文件添加:<constant name="struts.objectFactory" value="spring"></constant>并且把class="cn.ssm.sample.action.IndexAction"改成class="indexAction"4.5 修改Action在IndexAction的类上,加上@Controller,这样Spring就能自动实例化成indexAction对象了。
struts2+spring3+hibernate整合教程
Struts2+Spring3+hibernate3整合(2011年7月末,最新)上次下载了一个教程,上面写着:“献给我亲爱的老婆!”(羡慕不已)。
想了想,我没老婆,难道没什么好写了!不难…献给我暗恋过的每一个女人!(嘿嘿…)如果在你遇到的女生中有一个幽默豁达的女生,不要犹豫,追上去,就娶她了!一,需要的框架包二,建立project,添加相应的.jar文件(重点)1,eclipse中建立dynamic web project,这里是ssh_integrate_0100。
2,src中创建需要的类,这里以一个域模型为user的例子说明。
(现在建立这些类,可以方便我们在搭建时候随时测试!)User.javaIUserDao.javaUserDaoImpl.javaIUserService.javaUserServiceImpl.java3,拷贝spring-framework-3.1.0\dist目录下的所有jar包,注意有一个不是jar的文件,当然拷过去也没事。
4,拷贝spring运行中需要的其他jar文件,主要是mons-logging,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。
ii.Aspectjrt.jar和aspect-waver.jar,可以从spring-framework-2.5.6-with-dependencies/lib/aspectj下面找到(不知道为什么,spring-framework-3.0.2.RELEASE-dependencies中没有aspectjrt的jar包)iii.aopalliance.Jar,apache-dbcp.jar,apache-pool.jar,可以从spring-framework-3.0.2.RELEASE-dependencies中找到。
5,建立beans.xml,这里使用的是annotation和component-scan,这样配置可以大大简化配置,所以是best-practice,其他配置请参考spring文档。
struts2+spring3+mybatis整合
--src|-com.ssm|-action|-LoginAction.java|-entity|-User.java|-iface|-IUserDao.java|-impl|-UserDao.java|-seriface|-IUserServices.java|-impl|-UserServices.java|-sqlmap|-User.xmlapplicationContext.xmldatabase.Propertieslog4j.PropertiesmyBatis-config.xmlstruts.Propertiesstruts.xmlok直接上代码了:Action类: LoginAction.javapackage com.ssm.action;import java.util.ArrayList;import java.util.List;import com.opensymphony.xwork2.Action;import er;import com.ssm.seriface.IUserService;public class LoginAction implements Action{private User user;private IUserService userServices;public void setUserServices(IUserService userServices) {erServices = userServices;}public User getUser(){return user;}public void setUser(User user){er = user;}public String execute() throws Exception{String aaa= getUser().getId()+"";List userList= new ArrayList();userList= userServices.selectUserById(getUser().getId()); if(userList.size()>0){return Action.SUCCESS;}else{return Action.ERROR;}}}实体类User.javapackage com.ssm.entity;import java.io.Serializable;import java.util.Date;public class User implements Serializable{private int id;private String name;private String password;private Date birthday;public User(){}public User(String name, String password, Date birthday) {= name;this.password= password;this.birthday= birthday;}public int getId(){return id;}public void setId(int id){this.id = id;}public String getName(){return name;}public void setName(String name){ = name;}public String getPassword(){return password;}public void setPassword(String password){this.password = password;}public Date getBirthday(){return birthday;}public void setBirthday(Date birthday){this.birthday = birthday;}}IUserDao接口类IUserDao.javapackage com.ssm.iface;import java.util.List;public interface IUserDao{public boolean userVaild(String name, String password);public List selectUserById(int id);}UserDaoImpl实现接口类:UserDaoImpl.javapackage com.ssm.iface.impl;import java.util.List;import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; import com.ssm.iface.IUserDao;//import com.ssb.baseutil.SqlMapClientDaoSupport;//import com.ssb.iface.IUserDao;//import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport; public class UserDaoImpl extends SqlMapClientDaoSupport implements IUserDao {public List selectUserById(int id){// TODO Auto-generated method stubreturn getSqlMapClientTemplate().queryForList("selectUserById", id);}public boolean userVaild(String name, String password){// TODO Auto-generated method stubreturn false;}/*public boolean userVaild(String name, String password){return false;}public List selectUserById(String id){return getSqlMapClientTemplate().queryForList("getUserById", id);}*/}业务类IUserServices.javapackage com.ssm.seriface;import java.util.List;public interface IUserService{public boolean userVaild(String name, String password); public List selectUserById(int id);}UserServicesImpl.javapackage com.ssm.seriface.impl;import java.util.List;import com.ssm.iface.IUserDao;import com.ssm.seriface.IUserService;public class UserServiceImpl implements IUserService{private IUserDao serviceUserDao= null;public IUserDao getServiceUserDao(){return serviceUserDao;}public void setServiceUserDao(IUserDao serviceUserDao) {this.serviceUserDao = serviceUserDao;}public List selectUserById(int id){// TODO Auto-generated method stubreturn serviceUserDao.selectUserById(id);}public boolean userVaild(String name, String password){// TODO Auto-generated method stubreturn erVaild(name, password);}}mybatis实体配置文件User.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC"-////DTD Mapper 3.0//EN""/dtd/mybatis-3-mapper.dtd"><mapper namespace="user"><resultMap type="User" id="userResultMap"><id property="id" column="ID"/><result property="name" column="NAME"/><result property="password" column="PASSWORD"/><result property="birthday" column="BIRTHDAY"/></resultMap><select id="selectUserById" parameterType="ng.String" resultType="User"><![CDATA[SELECT * FROM USER SUWHERE SU.ID = #{id}]]></select></mapper>sprng配置文件applicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans" xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p" xmlns:context="/schema/context"xmlns:jee="/schema/jee" xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-2.5.xsd/schema/context/schema/context/spring-context-2.5.xsd/schema/jee/schema/jee/spring-jee-2.5.xsd/schema/tx/schema/tx/spring-tx-2.5.xsd"><!-- 数据源属性配置文件--><!-- <bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:com/databaseconfig/database.properties"/></bean>--><context:property-placeholder location="classpath:database.properties"/><bean id="dataSource" class="boPooledDataSource"><property name="driverClass" value="${jdbc.driverClassName}" /><property name="jdbcUrl" value="${jdbc.url}" /><property name="user" value="${ername}" /><property name="password" value="${jdbc.password}" /><property name="autoCommitOnClose" value="true"/><property name="checkoutTimeout" value="${cpool.checkoutTimeout}"/><property name="initialPoolSize" value="${cpool.minPoolSize}"/><property name="minPoolSize" value="${cpool.minPoolSize}"/><property name="maxPoolSize" value="${cpool.maxPoolSize}"/><property name="maxIdleTime" value="${cpool.maxIdleTime}"/><property name="acquireIncrement" value="${cpool.acquireIncrement}"/><property name="maxIdleTimeExcessConnections" value="${cpool.maxIdleTimeExcessConnections}"/> </bean><!-- 数据连接管理--><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!-- myBatis文件--><!--<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="configLocation" value="classpath:myBatis-config.xml"/></bean>--><bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"><property name="configLocation" value="classpath:myBatis-config.xml"/><property name="dataSource" ref="dataSource"/></bean><!-- ibatis2.x 配置<bean id="sqlMapClient" class="org.springframework.orm.ibatis.SqlMapClientFactoryBean"><property name="configLocation" value="classpath:myBatis-config.xml"/><property name="dataSource" ref="dataSource"/></bean>--><bean id="mapDao" class="org.mybatis.spring.MapperFactoryBean"><!-- 这里是接口,不是接口实现类了--><property name="mapperInterface" value="com.ssm.iface.IUserDao"/><property name="sqlSessionFactory" ref="sqlSessionFactory"/></bean><bean id="userServices" class="erServiceImpl"><property name="serviceUserDao" ref="mapDao"/></bean><bean id="LoginAction" class="com.ssm.action.LoginAction"><property name="userServices" ref="userServices"/></bean></beans>数据库连接属性配置文件(其实可以不用这么复杂)database.Propertiesjdbc.driverClassName=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://127.0.0.1:3306/ddtest?characterEncoding=utf8 ername=rootjdbc.password=123cpool.checkoutTimeout=5000cpool.minPoolSize=20cpool.maxPoolSize=50cpool.maxIdleTime=7200cpool.maxIdleTimeExcessConnections=1800cpool.acquireIncrement=10log4j 随便到log4j里copy一个吧mybatis-config.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC"-////DTD Config 3.0//EN""/dtd/mybatis-3-config.dtd"><configuration><typeAliases><typeAlias alias="User" type="er"/></typeAliases><mappers><mapper resource="com/ssm/sqlmap/User.xml" /></mappers></configuration>struts配置文件struts.Properties##整合spring的struts.objectFactory=springeClassCache = truestruts.locale=zh_CNstruts.i18n.encoding=GBKstruts的Action配置文件struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN""/dtds/struts-2.0.dtd"><struts><package name="style" extends="struts-default"><!--<action name="loginAction" class="sys.style.design.action.LoginAction"> <result name="success">success.jsp</result><result name="error">error.jsp</result></action>--><action name="loginAction" class="com.ssm.action.LoginAction"><result name="success">success.jsp</result><result name="error">error.jsp</result></action></package></struts>。
Eclipse+Struts+Spring+Hibernate+Mysql环境搭建及访问数据库实例
前言:这个例子的view层用到了struts,DAO层用到了hibernate,由于逻辑及其简单(只是往数据库添加一条记录),所以暂时没有用到spring。
一、使用eclipse+struts+spring+hibernate+myeclipse+mysql开发配置过程。
1.jdk的安装:安装文件:jdk-1_5_0_15-windows-i586-p.exe说明:最好用jdk1.5,可以去sun主页下载,我这里已经下了,可以提供。
注意:最好在新装系统下安装,并且此前没有装过java相关的软件,以免出现版本或者path问题。
过程:可以直接安装到c盘根目录下即可,注意要记住安装路径,以后可能会用到。
2.web应用服务器tomcat的安装:安装文件:apache-tomcat-5.5.26.exe说明:要想构建jsp应用,web应用服务器是必须要有的,asp服务器为IIS,php服务器为Apache,jsp服务器比较多有weblogic和websphere(两者是商业级的,比较强大,但要收费),tomcat和resin(免费的,比较适用中小级应用,如果是大型应用则须考虑集群)。
在这里,我选用tomcat,因为它使用较广泛,网上相关的资料也比较多。
我并没有选择最新版本,原因是次新版本往往比最新版本更加稳定。
注意:必须先装jdk,否则不能安装tomcat(原因之一是tomcat在对jsp进行编译时用到了jdk,并且jdk是tomcat正常工作的前提)。
过程:可以直接安装到c盘默认路径,选择前面安装的jdk路径,并且修改端口8080为80(tomcat默认端口为8080,而一般我们通过IE访问时端口为80,需要注意的是要保证没有其他程序已经占用80端口(比如你已经装了iis或者apache),否则tomcat不能正常启动),控制台页面的管理员admin帐号暂时不设置密码。
测试页面http://127.0.0.1,检测是否安装成功,如果进入欢迎页面就表示tomcat安装成功。
Maven搭建MyEclipse10+Struts2.1+Spring3.3+Hibernate3.3全注解框架
一、新建项目1.新建maven项目New ->project选择Maven projectnext在filter输入webapp选择maven-archetype-webappGroup id输入inscribe,artifact id输入farsighted二、添加struts2框架1.添加struts2支持项目上点右键->myeclipse->add struts capabilities点选struts2.1和/*只勾选struts2 core lib启动tomcat,在地址栏输入localhost:8088/farsighted出现如下界面2.添加action类New ->source folder输入src/main/javaNew ->classPackage输入org.inscribe.farsighted.action,name输入LoginActionLoginAction.javapackage org.inscribe.farsighted.action;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.ParentPackage; import org.apache.struts2.convention.annotation.Result;import com.opensymphony.xwork2.ActionSupport;/*** @author steve frank**/@ParentPackage("struts-default")public class LoginAction extends ActionSupport {private String name;private String password;public String getName() {return name;}public void setName(String name) { = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}@Action(value = "login", results = {@Result(name = INPUT, location = "/WEB-INF/content/fail.jsp"),@Result(name = SUCCESS, location = "/WEB-INF/content/success.jsp") }) public String execute() {if (name.equals("steve") && password.equals("123"))return SUCCESS;elsereturn INPUT;}}Index.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'index.jsp' starting page</title></head><body><s:form action="login"><s:textfield name="name" value="steve"></s:textfield><s:textfield name="password" value="123"></s:textfield><s:submit></s:submit></s:form></body></html>success.jsp<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>My JSP 'success.jsp' starting page</title></head><body><s:text name="password" /><hr /><s:property value="password" /></body></html>fail.jsp<body>登录失败,用户名或密码错误.</body>三、添加hibernate框架1.添加hibernate支持右键->myeclipse->add hibernate capabilities点选hibernate 3.3 勾选enable hibernate annotations support勾选hibernate 3.3 annotations&entity manager,hibernate 3.3 core lib,hibernate 3.3 advanced support lib点选copy checked library jars to folder and add to build-path点选newFolder :src/main/resources勾选open configuration file选择db driver:mysql去掉勾,不创建hibernatesessionfactory四、添加spring框架1.添加spring支持项目右键->myeclipse->add spring capabilities点选spring3.0勾选spring 3.0 core;spring 3.0 aop;spring3.0 persistence core; spring3.0 persistence jdbc; 勾选copy checked library contents to project folder采取默认,enable aop,new applicationcontext.xml不创建sessionfactory2.applicationContext.xml文件配置<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/context/schema/context/spring-context.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/tx/schema/tx/spring-tx.xsd"> <bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBea n"><property name="configLocation" value="classpath:hibernate.cfg.xml"></property><property name="packagesToScan" value="org.inscribe.farsighted.model" /> </bean><!-- 使用annotation 自动注册bean,并检查@Controller, @Service, @Repository注解已被注入--><context:component-scan base-package="org.inscribe.farsighted" /><!-- 配置事务管理--><bean id="transactionManager"class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory" /></bean><!-- 配置注解实现管理事务(cglib:proxy-target-class="true")--><tx:annotation-driven transaction-manager="transactionManager"proxy-target-class="true" /></beans>3.hibernate.cfg.xml修改<?xml version='1.0' encoding='UTF-8'?><!DOCTYPE hibernate-configuration PUBLIC"-//Hibernate/Hibernate Configuration DTD 3.0//EN""/hibernate-configuration-3.0.dtd"><!-- Generated by MyEclipse Hibernate Tools. --><hibernate-configuration><session-factory><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="connection.url">jdbc:mysql://localhost:3306/test</property><property name="ername">root</property><property name="connection.password">admin</property><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="myeclipse.connection.profile">MYSQL</property><!-- <mapping class="org.inscribe.farsighted.model.Student" /> --><!-- Connection Pooling Info --><property name="initialSize">5</property><property name="maxActive">100</property><property name="maxIdle">30</property><property name="maxWait">500</property><property name="defaultAutoCommit">false</property></session-factory></hibernate-configuration>4.web.xml文件配置<?xml version="1.0" encoding="UTF-8"?><web-app version="3.0" xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"><display-name></display-name><welcome-file-list><welcome-file>index.jsp</welcome-file></welcome-file-list><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext*.xml</param-value></context-param><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class ></listener><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter </filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><filter><filter-name>Set Character Encoding</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class><init-param><param-name>encoding</param-name><param-value>UTF-8</param-value></init-param><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><filter-mapping><filter-name>Set Character Encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>五、类的添加1.hibernate反向生成students表右键->hibernate reverse engineering选择package : com.inscribe.farsighted.model勾选create pojo<>db->点选add hibernate mapping annotations to pojo;勾选update hibernate configuration with mapping resource location勾选java data access object(dao)->勾选generate precise findby methods;点选sping daoId generation :native2.添加service接口package org.inscribe.farsighted.service;import org.inscribe.farsighted.model.Student;public interface StudentService {public Student findById(Integer id);}3.添加service实现类package org.inscribe.farsighted.service.impl;import javax.annotation.Resource;import org.inscribe.farsighted.model.Student;import org.inscribe.farsighted.model.StudentDAO;import org.inscribe.farsighted.service.StudentService;import org.springframework.stereotype.Service;@Servicepublic class StudentServiceImpl implements StudentService {@Resourceprivate StudentDAO studentDAO;@Overridepublic Student findById(Integer id) {// TODO Auto-generated method stubreturn studentDAO.findById(id);}}4.添加测试类package org.inscribe.farsighted;import org.inscribe.farsighted.model.Student;import org.inscribe.farsighted.service.StudentService;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;public class Test {public static void main(String[] args) {ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");StudentService service = (StudentService) context.getBean("studentServiceImpl");Student s=service.findById(1);System.out.println(s.getName());}}5.WEB-INF下新建Folder包结构如下6.修改输出目录Build path->configure build pathOut folder统一改default:Webapp/src/main/webapp/WEB-INF/classes更改如果无效,在pom.xml中<build>……</build>添加<sourceDirectory>src/main/java</sourceDirectory><resources><resource><directory>src/main/resources</directory></resource></resources><outputDirectory>src/main/webapp/WEB-INF/classes</outputDirectory>7.添加struts-spring支持(action注解配置支持)Build path->add librariesMyeclipse libraries勾选struts 2 spring libraries8.修改struts.xml<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration2.1//EN" "/dtds/struts-2.1.dtd"><struts><!-- 开启使用开发模式,详细错误提示--><constant name="struts.devMode" value="true" /><!-- 将对象交给spring管理--><constant name="struts.objectFactory" value="spring" /><!-- 指定资源编码类型--><constant name="struts.i18n.encoding" value="UTF-8" /><!-- 指定每次请求到达,重新加载资源文件--><constant name="struts.i18n.reload" value="true" /><!-- 指定每次配置文件更改后,自动重新加载--><constant name="struts.configuration.xml.reload" value="false" /><!-- 国际化资源文件--><constant name="struts.custom.i18n.resources" value="content/Language" /><!-- 浏览器缓存--><constant name="struts.serve.static.browserCache" value="false" /><!-- 默认后缀名--><constant name="struts.action.extension" value="do,action,jhtml,," /><!-- Struts Annotation --><constant name="actionPackages" value="com.frank.action" /> </struts>9.在LoginAction.java中添加调用StudentService@Resourceprivate StudentService studentService;测试Student s = studentService.findById(1);System.out.println(s.getName());10.success.jsp中添加<hr /> ${password}11.启动tomcat,地址栏输入http://localhost:8088/farsighted/点击submit效果如下包结构如下12.测试完成.。
struts2入门教程一(环境搭建,基本案例实现)CSDN
Struts2入门初步需掌握1.struts2概述2.struts2环境搭建(第一个struts2的应用程序)3.struts.xml文件配置详解4.struts2请求的URL的搜索路径的顺序概述5.struts2工作原理概述6.struts2指定多个配置文件7.struts2动态方法调用8.使用通配符定义action一:简介Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。
其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大。
Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与Servlet API完全脱离开,所以Struts 2可以理解为WebWork的更新产品。
虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。
二:环境搭建搭建Struts2环境时,我们一般需要做以下几个步骤的工作:1.找到开发Struts2应用需要使用到的jar文件.下载官网:/download.cgi#struts221解压后:开始学习使用依赖的最基本的jar 包2:编写Struts2的配置文件解压其中一个案例在此目录下找到struts.xml 文件先拷贝到项目的src 下。
再对起进行修改。
删除剩余如下代码:[html]01.<?xml version ="1.0"encoding ="UTF-8" ?> 02.<!DOCTYPE struts PUBLIC 03."-//Apache Software Foundation//DTD StrutsConfiguration 2.3//EN" 04."/dtds/struts-2.3.dtd"> 05.06.<struts> 07.08. </struts>无法加载插件。
Struts2+Spring+Hibernate搭建详解(包含代码)-13页word资料
Struts2+Spring+Hibernate搭建全解!Struts2+Spring+Hibernate是J2EE的最新流行框架。
本篇是我搭建这个框架的经验总结,有很多人搭建这个框架总会遇到大大小小的问题,网上也没有什么行之有效的方案或成体系的介绍,所以我就决定总结一下我的搭建过程。
给一些搭建尚存问题的朋友提供帮助。
我用这个框架,实现的是基本的CRUD功能的一个雇员管理系统,本来打算丰富一下功能,但是一直没能抽出空去搞。
目前版本暂定为1.0,除了CRUD外还配置了表单验证框架JSValidation。
功能都能很顺利的实现。
现在分享部分源码,来说明一些注意事项。
以下是部分搭建过程及源码:1.先组合实现Hibernate3.2+Spring2.5支持,删除hibernate.cfg.xml文件,修改applicationContext.xml文件的内容,增加SessionFactory和dataSource的设置。
2.通过MyEclipse的向导方式,生成POJO类和对应的映射文件。
3.修改applicationContext.xml文件中<property name="mappingResources">元素的内容。
4.编写DAO接口和实现类。
5.修改applicationContext.xml文件,增加对Dao实现类的配置。
6.组合Struts2和Spring2.5,修改web.xml文件,增加struts2的所需要的过滤器配置。
7.增加struts2相应类库,增加struts2与spring的配置jar包。
8.拷贝struts.xml文件到src根目录下,再修改struts.xml文件,进行常量配置。
9.修改web.xml文件,配置Spring监听器,和上下文变量。
并增加OpenSessionInViewFilter的设置。
10.写入action类。
11.配置struts.xml文件。
Struts2+spring2+hibernate3整合方案
Struts2+spring2+hibernate3整合方案最近闲来无事可做,于是开始学习struts2。
Struts2和struts1、webwork2有什么区别我也不说了,网上有很多这方面的资料。
以前在项目中从未使用过struts,一直使用spring+hibernate,现在既然学习了Struts,也不能浪费,于是乎开始琢磨着怎么整合这3个框架。
整合原理以spring为容器,管理hibernate的DAO和Struts2的Action。
一、准备工作Struts2.06+spring2.5+hibernate3.2+jdk6.0+myeclipse6.0+tomcat5.5+mysql 5.0以上是整合的原料。
下面以一个注册登陆的例子来开始我们的整合过程。
这个例子很简单,下面是它的sql脚本内容:CREATE TABLE `user` (`userid` int(11) NOT NULL AUTO_INCREMENT,`username` varchar(20) NOT NULL,`password` varchar(16) NOT NULL,`email` varchar(30) NOT NULL,PRIMARY KEY (`userid`)) ENGINE=InnoDB DEFAULT CHARSET=utf-8;二、开始行动包结构可以参考下图1) Struts部分:建立struts.xml和struts.propertiesStruts.xml内容如下:<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configur ation 2.0//EN" "/dtds/struts-2.0.dtd" ><struts><package name="user_curd" extends="struts-default"><global-results><!-- 下面定义的结果对所有的Action都有效 --><result name="exception">/error.jsp</result></global-results><global-exception-mappings><!-- 指Action抛出Exception异常时,转入名为exception的结果。
struts2+hibernate+spring经典整合实例教程
Struts2与Spring、Hibernate三者整合的过程示例:示例工具:MyEclipse 7.0、Tomcat 6.0、MySql步骤:1.创建一个WEB工程,命名为BookShop(名字自己取,此处为示例工程名);2.导入struts2的核心jar包,也就是在WEB-INF下的lib文件夹中放入jar包文件,如下图(图中jar包为示例版本):3.加载spring,选中工程名,右击并选择【MyEclipse】选项下的【Add Spring Capabilities...】(或者在工具栏中选择【MyEclipse】下的【Add Spring Capabilities...】),在弹出的对话框中进行如下图所示操作:点击【Next】,点击Folder文本框后的【Browse】,在弹出对话框中选择spring配置文件存储位置为WEB-INF 文件夹,如下图所示:点击【OK】后,再点击【Finish】完成。
至此,已经完成加载spring,在WEB-INF文件夹下已经生成了配置文件applicationContext.xml。
4.加载Hibernate,选择【MyEclipse】下的【Add Hibernate Capabilities...】,在弹出对话框中进行如下图所示操作:点击【Next】后,选择Existing Spring configuration file单选框,在SessionFactory Id文本框中填入"sessionFactory",如下图所示:点击【Next】,进行如下图所示操作:该操作中,只需在Bean Id文本框中输入一个Id名,作为数据库源的代用名,意义不大。
然后在DB Driver 下拉列表中,选择MyEclipse中创建好的数据库源xiaoqi,其他信息将自动填写。
点击【Next】,在弹出对话框中去掉Create SessionFactory class?复选框,不创建该类,点击【Finish】完成(创建过程中,加载的jar包文件可能有重复,所以这个时候如果提示有某些jar包重复,问全部保存【Keep Exiting】,还是替换掉【Replace】,可以选择替换掉【Replace】)。
Struts2框架搭建教程
Struts2教程1:第一个Struts2程序在本系列教程中我们将学习到Struts2的各种技术。
在本教程中使用的工具和程序库的版本如下:开发工具:MyEclipse6Web服务器:Tomcat6Struts版本:Struts2.0.11.1JDK版本:JDK1.5.0_12J2EE版本:Java EE5.0在本系列教程中Web工程的上下文路径都是struts2,如果在Web根目录有一个index.jsp文件,则访问路径如下:http://localhost:8080/struts2/index.jsp由于MyEclipse6目前并不支持Struts2,所以我们需要到去下载Struts2安装包。
要想正常使用Struts2,至少需要如下五个包(可能会因为Struts2的版本不同,包名略有差异,但包名的前半部是一样的)。
struts2-core-2.0.11.1.jarxwork-2.0.4.jarcommons-logging-1.0.4.jarfreemarker-2.3.8.jarognl-2.6.11.jarStruts2虽然在大版本号上是第二个版本,但基本上在配置和使用上已经完全颠覆了Struts1.x的方式(当然,Struts2仍然是基于MVC模式的,也是动作驱动的,可能这是唯一没变的东西)。
Struts2实际上是在Webwork基础上构建起来的MVC框架。
我们从Struts2的源代码中可以看到,有很多都是直接使用的xwork(Webwork的核心技术)的包。
既然从技术上来说Struts2是全新的框架,那么就让我们来学习一下这个新的框架的使用方法。
如果大家使用过Struts1.x,应该对建立基于Struts1.x的Web程序的基本步骤非常清楚。
让我们先来回顾一下建立基于Struts1.x的Web程序的基本步骤。
1.安装Struts。
由于Struts的入口点是ActionServlet,所以得在web.xml中配置一下这个Servlet。
struts2+spring+hibernate三大框架环境搭建小小总结
struts2+spring+hibernate三大框架环境搭建小小总结:一、环境搭建导入各种jar包什么的就不多说了。
二、整个包结构及模式:1、src文件下,由panyname组成一个大的包结构和各项配置文件组成2、companyname下,分成两部分:A、model层B、功能层3、model层下,包含整个项目所要的数据库表名,按照功能来命名包的名称,A、功能包下包含对应的数据库表的java类,里面包含对应数据库表中所有的字段以及get,set方法B、功能包下包含对应的数据库表的hbm.xml类,里面包含对应数据库表中所有字段的定义4、功能层下,可以只有一个功能模块的一个结构,也可以有多个功能模块的包结构,再在包结构下细分到功能模块的结构A、一个完整的功能模块包下包含:action,dao,service层,1>、对应的action层包含对应功能实现的Action类;2>、对应的dao层包含对应功能实现的数据库操作类;3>、对应的service层包含对应功能实现的各service接口;5、各项配置文件:A、首先包含三个大的配置文件:applicationContext.xml,struts.xml,jdbc.propertiesB、applicationContext.xml实现依赖注入,struts.xml实现各响应功能的配置,jdbc.properties配置数据库相关属性三、页面1、所有的页面,js包都放到WebRoot目录下,2、要配置web.xml文件3、所有的jar包放到WebRoot-WEB-INF-lib包下四、功能操作1、定义好model层,配置好对应的model.hbm.xml映射文件2、将对应的model.hbm.xml映射文件映射到applicationContext.xml文件中3、页面中对应的跳转,实现action,到struts-function.xml去增加对应的Action类和方法4、将struts-function.xml映射文件映射到struts.xml映射文件中5、在功能层下建立对应的功能包,包下包含action,dao,service三个层6、根据struts-function.xml映射文件,建立对应的Action类,在类中创建对应的方法7、在service层和dao层下分别建立对应的接口层和实现接口类8、在对应的applicationContext-function.xml映射文件中将dao层方法映射到对应的service 层中9、service层中,包含iservice层和实现iservice层的service10、在service类中实现对应的iservice定义的方法,并return这个dao对象的方法,11、根据这个方法,在idao接口中创建对应的方法,在dao层的实现类中来具体实现方法的业务12、dao层实现之后,将在Action中调用对应的dao层实现的方法,然后保存结果返回到对应的界面去13、至此,简单的一个业务就实现了。
Struts2.3.1.2+Spring3.3.1+Hibernate4.1.1 配置步骤
一.搭建struts-2.3.1.21.Jar包:2.配置struts2.3的过滤器,web.xml位置3.web.xml<?xml version="1.0"encoding="UTF-8"?><web-app id="WebApp_ID"version="3.0"xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance" xmlns:web="/xml/ns/javaee/web-app_2_5.xsd "xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_3_0.xsd"><!-- struts2单控制器 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.Struts PrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>4.配置struts.xml<?xml version="1.0"encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN""/dtds/struts-2.3.dtd"><struts><!-- 默认的配置包 --><package name="ssh"extends="struts-default,json-default,jfreechart-default,s pring-default"><action name="login"class="loginAction"><result name="ok">/loginOk.jsp</result><result name="error">/loginError.jsp</result></action></package></struts>5.测试struts二.整合Spring 3.1.1和Struts-2.3.1.21.jar包在配置好的strutsjar的基础上,添加额外Struts jar包:struts2-spring-plugin-2.3.1.2.jarcommons-logging-1.1.1.jarSpring的jar包:org.springframework.core-3.1.1.RELEASE.jarorg.springframework.context-3.1.1.RELEASE.jarorg.springframework.beans-3.1.1.RELEASE.jarorg.springframework.asm-3.1.1.RELEASE.jarorg.springframework.expression-3.1.1.RELEASE.jarorg.springframework.web-3.1.1.RELEASE.jar2.web.xml<?xml version="1.0"encoding="UTF-8"?>web-app id="WebApp_ID"version="3.0"xmlns="/xml/ns/javaee"xmlns:xsi=/2001/XMLSchema-instancexmlns:web="/xml/ns/javaee/web-app_2 _5.xsd"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_3_0.xsd"><!-- struts2单控制器 --><filter><filter-name>struts2</filter-name><filter-class>org.apache.struts2.dispatcher.ng.filter.Str utsPrepareAndExecuteFilter</filter-class></filter><filter-mapping><filter-name>struts2</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- spring创建工厂监听器--><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 告知spring config location 的存储位置--><context-param><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/classes/applicationContext.xml</par am-value></context-param></web-app>3.配置springapplicationContext.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:p="/schema/p"xmlns:tx="/schema/tx"xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd/schema/tx/schema/tx/spring-tx-3.0.xsd/schema/aop/schema/aop/spring-aop-3.0.xsd/schema/context/schema/context/spring-context-3.0.xsd"> <context:annotation-config /><context:component-scan base-package="com.excel" /></beans>三.整合Hibernate4.1.11.jar包添加Hibernate jar文件Hibernate压缩包中的lib/required/antlr-2.7.7.jardom4j-1.6.1.jarhibernate-commons-annotations-4.0.1.Final.jarhibernate-core-4.1.1.Final.jarhibernate-jpa-2.0-api-1.0.1.Final.jarjavassist-3.15.0-GA.jarjboss-logging-3.1.0.GA.jarjboss-transaction-api_1.1_spec-1.0.0.Final.jar lib/jpa/hibernate-entitymanager-4.1.1.Final.jarlib/optional/c3p0/hibernate-c3p0-4.1.1.Final.jarc3p0-0.9.1.jarSpring中的jar文件org.springframework.aop-3.1.1.RELEASE.jarorg.springframework.jdbc-3.1.1.RELEASE.jarorg.springframework.orm-3.1.1.RELEASE.jarorg.springframework.transaction-3.1.1.RELEASE.jar 其他的Spring支持文件aopalliance.jar -- AOP要用到的jar包以及连接db2的jarDb2jcc.Jar以及支持el表达式的standard.jar2.配置文件<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:jee="/schema/jee"xmlns:tx="/schema/tx"xmlns:aop="/schema/aop"xmlns:p="/schema/p"xmlns:util="/schema/util"xmlns:tool="/schema/tool" xmlns:context="/schema/context"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans.xsd/schema/tx/schema/tx/spring-tx.xsd/schema/aop/schema/aop/spring-aop.xsd/schema/jee/schema/jee/spring-jee.xsd/schema/context/schema/context/spring-context.xsd /schema/util/schema/util/spring-util.xsd/schema/tool/schema/tool/spring-tool.xsd"default-lazy-init="true"default-autowire="byName"> <!--配置数据源 --><bean id="dataSource"class="boPooledDataSource"destroy-method="close"><property name="driverClass"value="com.ibm.db2.jcc.DB2Driver" /><property name="jdbcUrl"value="jdbc:db2://192.168.1.35:50000/ZL_DEMO"/><property name="user"value="db2admin"/><property name="password"value="Forwor888"/></bean><!-- hibernate.cfg.xml Spring config --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><!-- connection --><property name="dataSource"><ref local="dataSource"/></property><!-- hibernate自身属性 --><property name="hibernateProperties"><props><prop key="hibernate.show_sql">true</prop><prop key="hibernate.format_sql">true</prop><propkey="hibernate.dialect">org.hibernate.dialect.DB2Dialect</prop> </props></property><!-- 映射文件 --><property name="mappingResources"><list><value>com/forwor/ssh/entity/xml/User.hbm.xml</value></list></property></bean><!-- 注入 --><bean id="userDAO"class="erDAOImpl"> <property name="sessionFactory"><ref local="sessionFactory"/></property></bean><!-- aop --><!-- transaction --><bean id="userBiz"class="erBizImpl"> <property name="userDAO"><ref local="userDAO"/></property></bean><!-- advice --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager "><property name="sessionFactory"><ref local="sessionFactory"/></property></bean><!-- 事务处理 --><bean id="transactionInterceptor"class="org.springframework.transaction.interceptor.TransactionInterce ptor"><property name="transactionManager"><ref local="transactionManager"/></property><property name="transactionAttributes"><props><prop key="register">PROPAGATION_REQUIRED</prop><!--hibernate4必须配置为开启事务否则 getCurrentSession()获取不到--><prop key="get*">PROPAGATION_REQUIRED,readOnly</prop><prop key="find*">PROPAGATION_REQUIRED,readOnly</prop><prop key="select*">PROPAGATION_REQUIRED,readOnly</prop><prop key="query*">PROPAGATION_REQUIRED,readOnly</prop><prop key="sync*">PROPAGATION_REQUIRED</prop><prop key="finish*">PROPAGATION_REQUIRED</prop><prop key="add*">PROPAGATION_REQUIRED</prop><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="edit*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="save*">PROPAGATION_REQUIRED</prop><prop key="remove*">PROPAGATION_REQUIRED</prop><prop key="delete*">PROPAGATION_REQUIRED</prop><propkey="*">PROPAGATION_REQUIRED,ng.Exception</prop></props></property></bean><!-- autoproxy 自动创建代理--><bean id="ProxyCreator"class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyC reator"><property name="beanNames"><list><value>*Biz</value></list></property><property name="interceptorNames"><list><value>transactionInterceptor</value></list></property></bean><bean id="loginAction"class="com.forwor.ssh.web.LoginAction" scope="prototype"><property name="userBiz"><ref local="userBiz"/></property></bean></beans>。
struts2+spring+mybatis框架整合详细介绍
struts2+spring+mybatis框架整合详细介绍一、问题的提出最近一直在看各种主流javaweb框架,感触颇深,一个好的框架可以让你的程序代码变得相当的明了,也便于后期的维护!目前用到的主流框架包括struts2+spring+mybatis和spring+springmvc+mybatis(注:个人觉得mybatis框架很好用,所以框架基本都会选择用mybatis)。
其实很多的小伙伴都想自己配置个框架,但是基于怕报错啊、引入jar包、程序调试啊等等问题都放弃了!基于这个现象,本人在这里就详细的介绍下本人配置框架的详细过程,希望对读者有所帮助。
二、引入jar包这个问题一直是想搭建框架的小伙伴们的最大的一个障碍!很多人就是由于不知道导入什么样的jar而犯愁!对于这个问题我个人的想法是,jar包都是向下兼容的所以你大可不用担心你的jar包版本不对的问题,尽可能下载版本靠后的jar包就能解决这个问题。
其次是不知道要导入多少个jar包,这确实是个棘手的问题,对于这个问题我的解决方案是:首选是在网上查找,这方面的资料网上还是很全面的什么jar都可以下载,其次是注意struts2 以及spring 等的官网,官网上也会有详细的介绍每个jar的功能。
这里我就不在详细的描述了。
下面是我这个框架搭建需要的jar包截图,如果有需要jar包的可私下联系我,大家共同学习。
s三、配置框架1、首先让大家看看我配置完后的框架图,再来讲述我配置的流程2、配置流程2.1、首先任何一个系统都需要有其对应的数据库,这里我用的是mysql数据库,首先在数据库里新建个数据库,注意数据库的字符集最好选为utf-8的这样能防止数据库中文字符乱码。
由于我只是配置框架,所以我新建数据库名为wayneT est数据库里也只建了一张表,如下图:2.2、建好数据库后,我用了个工具Mybatis Generator自动生成model类,dao,mapper文件.这个工具的详细的用法网上也很多,如果读者不懂得话也可以私下联系我这里给你们个链接Mybatis 主页/p/mybatis/ 上下载Mybatis mybatis-generator-core 。
Struts2_spring整合
Struts_spring整合第一步:建立WEB工程Spring_Struts2第二步:①导入struts2支持的JAR包:将struts-2.1.8.1-all\struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF\lib下的所有JAR包(6个jar 包,是struts必要的包)拷入到工程目录下的WEB-INF/lib目录下,如果没有看到你拷入的JAR包需要强制加载(这一步指的是如果包导入到lib下后仍然存在WEB-INF/lib下而没有在工程下出现Referenced Liberaries这一项则需要选中lib文件夹,单击右键,Build Path,Configure Build Path,在弹出的对话框中选择Order and Export,Select All,确定)。
②此外还需要struts2-spring-plugin-2.1.8.1.jar支持包,整合spring与struts2所必需的JAR 包,它位于struts-2.1.8.1-all\struts-2.1.8.1\lib目录下第三步:拷贝配置文件web.xml,struts.xml,它们分别位于路径:①struts-2.1.8.1-all\struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF(web.xml所在位置)拷贝Web.xml文件到工程的Web-INF路径下。
Web-INF路径下是受保护的,不会被访问到,保证数据的安全。
②struts-2.1.8.1-all\struts-2.1.8.1\apps\struts2-blank-2.1.8.1\WEB-INF\classes(struts.xml所在位置)拷贝struts.xml文件到工程的src文件下并删除<Struts>标签内的内容,它用于配置action。
内部有一个包含文件<include file="com/ibm/struts/conf/struts_user.xml"/>,这段代码表示,struts.xml中的包含文件是com/ibm/struts/conf包下的struts_user.xml。
Struts2+Spring+MyBatis整合文档
ORM 框架思想
02
03 04
由sessionFactory产生session
在session中完成数据库的操作
关闭session
2.5 MyBatis原理
加载配置并初始化: 将SQL的配置信息加载成为一个个 MappedStatement对象(包括了传入参数 映射配置、执行的SQL语句、结果映射配 置),存储在内存中。 返回处理结果: 将最终的处理结果返回。
框架的诞生
三层架构理念降低了系统级别的复杂性,有利于项目的实施和开发。但对于 普通开发人员来讲,相关技术的掌握,仍然是相对长期和高成本的。 对于工业级别的生产开发来讲,有没有更高效、更快捷的技术呢? 如果将传统开发过程中的系统级服务,比如通信功能实现、基础类型的抽象 和构造、类和实例的运行时识别、数据库资源的连接分配回收等,都交由自 动化的程序去实现,不必程序员自己去开发,程序员只要关注核心的业务逻 辑,是不是能更好的完成系统的业务功能,极大的提升生产率,加快项目开 发速度呢? 于是具备良好可重用性、稳定性、团队协作性的框架出现了,基于 MVC 的 struts、基于IOC的spring、基于ORM的hibernate框架,以及SSM等各种框架, 为企业级web应用提供了快速工业化开发的可能。
应用分层
尽管面向对象有很多优点,但在实践中,仍然暴露出很多问题: 封装、继承、多态等特性提高了开发效率,降低了系统的运行效率;强调封 装,使得代码臃肿,增加了开销; 随着企业级应用的发展,即便运用面向对象的思想也仍然难以应对复杂的业 务逻辑。开发程序时,要设计一个合理的程序框架,对开发工程师的要求很 高。 针对工程实践中的问题,产生三层架构理论。将业务应用划分为表现层、业 务逻辑层、数据访问层,在客户端和数据库之间加入中间层,避免用户与数 据库的直接交互,实现高内聚、低耦合。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最新Struts2+Spring3.0+MyBatis3.0平台搭建1、导入相应的jar包2、配置web.xml主要是配置struts2和springweb.xml文件内容如下:[html]view plaincopy1.<?xml version="1.0"encoding="UTF-8"?>2.<web-app version="2.5"xmlns="/xml/ns/javaee"3.xmlns:xsi="/2001/XMLSchema-instance"4.xsi:schemaLocation="/xml/ns/javaee5. /xml/ns/javaee/web-app_2_5.xsd">6.<welcome-file-list>7.<welcome-file>index.jsp</welcome-file>8.</welcome-file-list>9.10.<!-- 加载spring的配置文件 -->11.<listener>12.<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>13.</listener>14.<!-- 配置spring配置文件加载的位置 -->15.<context-param>16.<param-name>contextConfigLocation</param-name>17.<param-value>classpath:beans.xml</param-value>18.</context-param>19.20.21.<!-- 配置struts2 -->22.<filter>23.<filter-name>struts2</filter-name>24.<filter-class>25. org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>26.</filter>27.<filter-mapping>28.<filter-name>struts2</filter-name>29.<url-pattern>/*</url-pattern>30.</filter-mapping>31.32.33.</web-app>3、配置spring配置文件,主要包括配置数据源、事务、mybaits等beans.xml配置文件详细如下:[html]view plaincopy1.<?xml version="1.0"encoding="UTF-8"?>2.<beans xmlns="/schema/beans"3.xmlns:xsi="/2001/XMLSchema-instance"4.xmlns:context="/schema/context"5.xmlns:aop="/schema/aop"6.xmlns:tx="/schema/tx"7.xsi:schemaLocation="/schema/beans8. /schema/beans/spring-beans-3.0.xsd9. /schema/aop10. /schema/aop/spring-aop-3.0.xsd11. /schema/tx12. /schema/tx/spring-tx-3.0.xsd13. /schema/context14. /schema/context/spring-context-3.0.xsd">15.16.<!-- 采用注释的方式配置bean -->17.<context:annotation-config/>18.<!-- 配置要扫描的包 -->19.<context:component-scan base-package=""></context:component-scan>20.21.<!--proxy-target-class="true"强制使用cglib代理如果为false则spring会自动选择-->22.<aop:aspectj-autoproxy proxy-target-class="true"/>23.24.<!-- 数据库配置文件位置 -->25.<context:property-placeholder location="classpath:jdbc.properties"/>26.27.<!-- 配置dbcp数据源 -->28.<bean id="dataSource"class="mons.dbcp.BasicDataSource"destroy-method="close">29.<property name="driverClassName"value="${jdbc.driverClassName}"/>30.<property name="url"value="${jdbc.url}"/>31.<property name="username"value="${ername}"/>32.<property name="password"value="${jdbc.password}"/>33.<!-- 队列中的最小等待数 -->34.<property name="minIdle"value="${jdbc.minIdle}"></property>35.<!-- 队列中的最大等待数 -->36.<property name="maxIdle"value="${jdbc.maxIdle}"></property>37.<!-- 最长等待时间,单位毫秒 -->38.<property name="maxWait"value="${jdbc.maxWait}"></property>39.<!-- 最大活跃数 -->40.<property name="maxActive"value="${jdbc.maxActive}"></property>41.<property name="initialSize"value="${jdbc.initialSize}"></property>42.</bean>43.44.<!-- 配置mybitasSqlSessionFactoryBean -->45.<bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryBean">46.<property name="dataSource"ref="dataSource"/>47.<property name="configLocation"value="classpath:mybatis.xml"></property>48.</bean>49.50.<!-- 配置SqlSessionTemplate -->51.<bean id="sqlSessionTemplate"class="org.mybatis.spring.SqlSessionTemplate">52.<constructor-arg name="sqlSessionFactory"ref="sqlSessionFactory"/>53.</bean>54.55.<!-- 事务配置 -->56.<bean id="transactionManager"class="org.springframework.jdbc.datasource.DataSourceTransactionManager">57.<property name="dataSource"ref="dataSource"/>58.</bean>59.60.<!-- 使用annotation注解方式配置事务 -->61.<tx:annotation-driven transaction-manager="transactionManager"/>62.63.</beans>4.JDBC配置文件详细[plain]view plaincopy1.jdbc.driverClassName=com.mysql.jdbc.Driver2.jdbc.url=jdbc:mysql://localhost:3306/operationLogername=root4.jdbc.password=5.jdbc.maxActive = 26.jdbc.maxIdle =57.jdbc.minIdle=18.jdbc.initialSize =39.jdbc.maxWait =30005、配置mybatis主配置文件:[html]view plaincopy1.<?xml version="1.0"encoding="UTF-8"?>2.<!DOCTYPE configuration PUBLIC "-////DTD Config3.0//EN" "http://my/dtd/mybatis-3-config.dtd">3.<configuration>4.<typeAliases>5.<typeAlias alias="user"type="er"/>6.</typeAliases>7.<mappers>8.<mapper resource="com/pdsu/edu/domain/sqlMappers/user.xml"/>9.</mappers>10.</configuration>6、配置user.xml文件[html]view plaincopy1.<?xml version="1.0"encoding="utf-8"?>2.<!DOCTYPE mapper PUBLIC "-////DTD Mapper3.0//EN"3."/dtd/mybatis-3-mapper.dtd">4.<mapper namespace="er">5.6.<resultMap type="er"id="userResult">7.<result property="id"column="id"jdbcType="INTEGER"javaType="ng.Integer"/>8.<result property="username"column="username"/>9.<result property="password"column="password"/>10.</resultMap>11.<select id="userLogin"parameterType="user"resultMap="userResult">12. select * from user13. whereername=#{username} and password=#{password}15.</select>16.17.<select id="selectAllUser"resultMap="userResult">18. select * from user19.</select>20.21.<select id="findUserById"parameterType="int"resultMap="userResult">22. select *23. from user where id=#{id}24.</select>25.26.<insert id="insertUser"parameterType="user">27.<![CDATA[28. insert into29. user(username,password) values(#{username},#{password})30. ]]>31.</insert>32.33.<update id="updateUser"parameterType="user">34. update user setername=#{username},password=#{password} where id=#{id}36.</update>37.38.<delete id="deleteUser"parameterType="int">39. delete from user where40.id=#{id}41.</delete>42.43.</mapper>7、User实体的写法[java]view plaincopy1.public class User implements Serializable {2.private static final long serialVersionUID = -4415990281535582814L;3.private Integer id;4.private String username;5.private String password;6.7.public Integer getId() {8.return id;9. }10.11.public void setId(Integer id) {12.this.id = id;13. }14.15.public String getUsername() {16.return username;17. }18.19.public void setUsername(String username) {ername = username;21. }22.23.public String getPassword() {24.return password;25. }26.27.public void setPassword(String password) {28.this.password = password;29. }30.31.@Override32.public String toString() {33.return"User [id=" + id + ", password=" + password + ", username=" + username + "]";34. }35.36.@Override37.public int hashCode() {38.final int prime = 31;39.int result = 1;40. result = prime * result + ((id == null) ? 0 : id.hashCode());41.return result;42. }43.44.@Override45.public boolean equals(Object obj) {46.if (this == obj)47.return true;48.if (obj == null)49.return false;50.if (getClass() != obj.getClass())51.return false;52. User other = (User) obj;53.if (id == null) {54.if (other.id != null)55.return false;56. } else if (!id.equals(other.id))57.return false;58.return true;59. }60.}8、UserDao的写法[java]view plaincopy1.public interface UserDao {2.3.public abstract void insertUser(User user);4.5.public abstract void updateUser(User user);6.7.public abstract void deleteUser(Integer userId);8.9.public abstract User findUserByid(Integer userId);10.11.public abstract List<User> findAll();12.13.public abstract User userLogin(User user);14.15.}9、UserDao的实现[java]view plaincopy1.@Repository2.public class UserDaoImpl implements UserDao {3.private final String INSERT_USER = "insertUser";4.private final String UPDATE_USER = "updateUser";5.private final String DELETE_USER = "deleteUser";6.private final String FIND_USER_BYID = "findUserById";7.private final String SELECT_ALL_USER = "selectAllUser";8.private final String USER_LOGIN = "userLogin";9.@Autowired10.private SqlSessionTemplate sqlSessionTemplate;11.12.public void insertUser(User user) {13. sqlSessionTemplate.insert(INSERT_USER, user);14. }15.16.public void updateUser(User user) {17. sqlSessionTemplate.update(UPDATE_USER, user);18. }19.20.public void deleteUser(Integer userId) {21. sqlSessionTemplate.delete(DELETE_USER, userId);22. }23.24.public User findUserByid(Integer userId) {25.return sqlSessionTemplate.selectOne(FIND_USER_BYID, userId);26. }27.28.public List<User> findAll() {29.return sqlSessionTemplate.selectList(SELECT_ALL_USER);30. }31.32.public User userLogin(User user) {33.return sqlSessionTemplate.selectOne(USER_LOGIN, user);34. }35.}10、UserService接口[java]view plaincopy1.public interface UserService {2.3.// 添加用户4.public abstract void addUser(User user);5.6.public abstract void updateUser(User user);7.8.public abstract void deleteUser(Integer userId);9.10.public abstract User findUserById(Integer userId);11.12.public abstract List<User> findAllUser();13.14.public abstract User login(User user);15.16.}11、UserService接口的实现[java]view plaincopy1.@Service2.@Transactional3.public class UserServiceImpl implements UserService {4.5.@Autowired6.private UserDao userDao;7.8.// 添加用户9.public void addUser(User user) {10. userDao.insertUser(user);11. }12.13.// 更新用户14.public void updateUser(User user) {15. userDao.updateUser(user);16. }17.18.public void deleteUser(Integer userId) {19. userDao.deleteUser(userId);20. }21.22.public User findUserById(Integer userId) {23.return userDao.findUserByid(userId);24. }25.26.public List<User> findAllUser() {27.return userDao.findAll();28. }29.30.public User login(User user) {31.return erLogin(user);32. }33.}12、配置Struts2[html]view plaincopy1.<?xml version="1.0"encoding="UTF-8"?>2.<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "/dtds/struts-2.1.dtd">3.<struts>4.<constant name="struts.i18n.encoding"value="UTF-8"/>5.<!-- 指定默认编码集,作用于HttpServletRequest的setCharacterEncoding()和freemarker,vilocity的输出 -->6.<constant name="struts.configuration.xmlreload"value="true"/>7.<!-- 当struts配置文件修改时是否自动加载 -->8.<constant name="struts.devMode"value="true"/>9.<!-- 开发模式下打印详细的错误信息 -->10.<constant name="struts.ui.theme"value="xhtml"/>11.12.<package name="user"namespace="/user"extends="struts-default">13.<action name="user_*"class="userAction"method="{1}">14.<result name="success"type="redirectAction">user_queryAllUser.action</result>15.<result name="input">/index.jsp</result>16.<result name="userList">/userList.jsp</result>17.<result name="addUser">/userAdd.jsp</result>18.<result name="updateUser">/userUpdate.jsp</result>19.</action>20.</package>21.</struts>13、UserAction具体实现[java]view plaincopy1.@Controller2.@Scope("prototype")3.public class UserAction extends ActionSupport {4.@Autowired5.private UserService userService;6.private User user;7.private List<User> userList;8.9.public String execute() throws Exception {10.return null;11. }12.13.public String login() {14.if (user != null) {15. User user2 = userService.login(user);16.if (user2 != null) {17.return SUCCESS;18. }19. }20.this.addFieldError("ername", "用户名或密码错误!");21.return INPUT;22. }23.24.public String addUI() {25.return"addUser";26. }27.28.public String updateUI() {29. user = userService.findUserById(user.getId());30.return"updateUser";31. }32.33.public String add() {34. userService.addUser(user);35.return SUCCESS;36. }37.38.public String delete() {39. userService.deleteUser(user.getId());40.return SUCCESS;41. }42.43.public String update() {44. userService.updateUser(user);45.return SUCCESS;46. }47.48.public User getUser() {49.return user;50. }51.52.public void setUser(User user) {er = user;54. }55.56.public String queryAllUser() {57. userList = userService.findAllUser();58.return"userList";59. }60.61.public List<User> getUserList() {62.return userList;63. }64.65.public void setUserList(List<User> userList) {erList = userList;67. }68.69.}14、登录页面的实现[html]view plaincopy1.<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>2.<%@ taglib prefix="s"uri="/struts-tags"%>3.<%4.String path = request.getContextPath();5.String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";6.%>7.8.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">9.<html>10.<head>11.<base href="<%=basePath%>">12.13.<title>用户登录</title>14.<meta http-equiv="pragma"content="no-cache">15.<meta http-equiv="cache-control"content="no-cache">16.<meta http-equiv="expires"content="0">17.<meta http-equiv="keywords"content="keyword1,keyword2,keyword3">18.<meta http-equiv="description"content="This is my page">19.<!--20. <link rel="stylesheet" type="text/css" href="styles.css">21. -->22.<s:head/>23.</head>24.25.<body>26.<center>27.<h1>用户登录</h1>28.<s:a action="user_addUI"namespace="/user">添加新用户</s:a>29.<s:form action="user_login"namespace="/user"method="post">30.<s:textfield label="用户名"name="ername"></s:textfield>31.<s:password label="密码"name="user.password"></s:password>32.<s:submit value="登录"></s:submit>33.</s:form>34.</center>35.</body>36.</html>15、添加页面[html]view plaincopy1.<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>2.<%@ taglib prefix="s"uri="/struts-tags"%>3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5.<head>6.7.<title>添加新用户</title>8.9.<meta http-equiv="pragma"content="no-cache">10.<meta http-equiv="cache-control"content="no-cache">11.<meta http-equiv="expires"content="0">12.13.</head>14.15.<body>16.<center>17.<h1>添加新用户</h1>18.<s:form action="user_add"namespace="/user"method="post">19.<s:textfield label="用户名"name="ername"></s:textfield>20.<s:password label="密码"name="user.password"></s:password>21.<s:submit value="提交"></s:submit>22.</s:form>23.</center>24.</body>25.</html>16、修改页面[html]view plaincopy1.<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>2.<%@ taglib prefix="s"uri="/struts-tags"%>3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5.<head>6.7.<title>修改用户</title>8.9.<meta http-equiv="pragma"content="no-cache">10.<meta http-equiv="cache-control"content="no-cache">11.<meta http-equiv="expires"content="0">12.13.</head>14.15.<body>16.<center>17.<h1>修改用户</h1>18.<s:form action="user_update"namespace="/user"method="post">19.<s:hidden name="user.id"></s:hidden>20.<s:textfield label="用户名"name="ername"></s:textfield>21.<s:password label="密码"name="user.password"></s:password>22.<s:submit value="提交"></s:submit>23.</s:form>24.</center>25.</body>26.</html>17、列表页面[html]view plaincopy1.<%@ page language="java"import="java.util.*"pageEncoding="UTF-8"%>2.<%@ taglib prefix="s"uri="/struts-tags"%>3.<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.01 Transitional//EN">4.<html>5.<head>6.7.<title>用户列表</title>8.9.<meta http-equiv="pragma"content="no-cache">10.<meta http-equiv="cache-control"content="no-cache">11.<meta http-equiv="expires"content="0">12.13.</head>14.15.<body>16.<center>17.<h2>用户列表</h2>18.<h3><s:a action="user_addUI"namespace="/user">添加新用户</s:a></h3>19.<table width="90%"border="1">20.<tr>21.<th>用户id</th>22.<th>用户名称</th>23.<th>用户密码</th>24.<th>操作</th>25.</tr>26.<s:iterator value="userList">27.<tr>28.<td><s:property value="id"/></td>29.<td><s:property value="username"/></td>30.<td><s:property value="password"/></td>31.<td><s:a action="user_updateUI"namespace="/user"><s:paramname="user.id">${id}</s:param>修改</s:a>32.<s:a action="user_delete"namespace="/user"><s:param name="user.id">${id}</s:param>删除</s:a></td>33.</tr>34.</s:iterator>35.</table>36.</center>37.</body>38.</html>。