一 运行环境: XP3+Myeclipse6.6+Tomcat7
二 项目框架版本号:Struts2 version: 2.2.1.1,Spring version: 3.1,Hibernate version:3.6,在Hibernate下有个jar为:javassist-3.12.0.GA.jar,在这个示例中用的是:javassist-3.7.ga.jar,这二个在这个示例中都可以用,没问题,一般原则用新版本的
项目所用jar文件如下图
三 具体实现如下:
1 配置文件:
Web.xml
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="2.4"
- xmlns="http://java.sun.com/xml/ns/j2ee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
- http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
- <context-param>
- <param-name>webAppRootKey</param-name>
- <param-value>s2sh.root</param-value>
- </context-param>
- <context-param>
- <param-name>
- contextConfigLocation
- </param-name>
- <param-value>
- classpath*:applicationContext.xml
- </param-value>
- </context-param>
- <context-param>
- <param-name>log4jConfigLocation</param-name>
- <param-value>/WEB-INF/classes/log4j.properties</param-value>
- </context-param>
- <context-param>
- <param-name>log4jRefreshInterval</param-name>
- <param-value>60000</param-value>
- </context-param>
- <context-param>
- <param-name>log4jExposeWebAppRoot</param-name>
- <param-value>false</param-value>
- </context-param>
- <listener>
- <listener-class>
- org.springframework.web.context.ContextLoaderListener
- </listener-class>
- </listener>
- <listener>
- <listener-class>
- org.springframework.web.util.Log4jConfigListener
- </listener-class>
- </listener>
- <filter>
- <filter-name>
- encodingFilter
- </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>
- </filter>
- <filter-mapping>
- <filter-name>
- encodingFilter
- </filter-name>
- <url-pattern>
- /*
- </url-pattern>
- </filter-mapping>
- <filter>
- <filter-name>
- openSessionInView
- </filter-name>
- <filter-class>
- org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
- </filter-class>
- </filter>
- <filter-mapping>
- <filter-name>
- openSessionInView
- </filter-name>
- <url-pattern>
- /*
- </url-pattern>
- </filter-mapping>
- <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>
- <welcome-file-list>
- <welcome-file>
- index.jsp
- </welcome-file>
- </welcome-file-list>
- </web-app>
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> <context-param> <param-name>webAppRootKey</param-name> <param-value>s2sh.root</param-value> </context-param> <context-param> <param-name> contextConfigLocation </param-name> <param-value> classpath*:applicationContext.xml </param-value> </context-param> <context-param> <param-name>log4jConfigLocation</param-name> <param-value>/WEB-INF/classes/log4j.properties</param-value> </context-param> <context-param> <param-name>log4jRefreshInterval</param-name> <param-value>60000</param-value> </context-param> <context-param> <param-name>log4jExposeWebAppRoot</param-name> <param-value>false</param-value> </context-param> <listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener> <listener> <listener-class> org.springframework.web.util.Log4jConfigListener </listener-class> </listener> <filter> <filter-name> encodingFilter </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> </filter> <filter-mapping> <filter-name> encodingFilter </filter-name> <url-pattern> /* </url-pattern> </filter-mapping> <filter> <filter-name> openSessionInView </filter-name> <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> </filter> <filter-mapping> <filter-name> openSessionInView </filter-name> <url-pattern> /* </url-pattern> </filter-mapping> <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> <welcome-file-list> <welcome-file> index.jsp </welcome-file> </welcome-file-list> </web-app>
Struts2.xml文件如下:
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
- "http://struts.apache.org/dtds/struts-2.0.dtd">
- <struts>
- <package name="user" extends="struts-default">
- <action name="userAction" class="u">
- <result name="success">success.jsp</result>
- <result name="userList">userList.jsp</result>
- <result name="fail">fail.jsp</result>
- <result name="user">user.jsp</result>
- </action>
- </package>
- </struts>
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="user" extends="struts-default"> <action name="userAction" class="u"> <result name="success">success.jsp</result> <result name="userList">userList.jsp</result> <result name="fail">fail.jsp</result> <result name="user">user.jsp</result> </action> </package> </struts>
applicationContext.xml配置文件如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:aop="http://www.springframework.org/schema/aop"
- xmlns:tx="http://www.springframework.org/schema/tx"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context-3.0.xsd
- http://www.springframework.org/schema/aop
- http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
- http://www.springframework.org/schema/tx
- http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">
- <context:annotation-config />
- <context:component-scan base-package="com.liuzd.s2sh" />
- <bean
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="locations">
- <value>classpath:jdbc.properties</value>
- </property>
- </bean>
- <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
- <property name="driverClassName"
- value="${jdbc.driverClassName}" />
- <property name="url" value="${jdbc.url}" />
- <property name="username" value="${jdbc.username}" />
- <property name="password" value="${jdbc.password}" />
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
- <property name="dataSource" ref="dataSource" />
- <property name="packagesToScan">
- <list>
- <value>com.liuzd.s2sh.entity</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">
- org.hibernate.dialect.Oracle10gDialect
- </prop>
- <prop key="hibernate.show_sql">true</prop>
- <prop key="format_sql">true</prop>
- </props>
- </property>
- </bean>
- <!-- 让spring管理sessionFactory的加一种方法 ,就是不删除hibernate.cfg.xml文件;
- <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
- <property name="configLocation">
- <value>classpath:hibernate.cfg.xml</value>
- </property>
- </bean>
- -->
- <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">
- <property name="sessionFactory" ref="sessionFactory"></property>
- </bean>
- <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
- <property name="dataSource" ref="dataSource"></property>
- </bean>
- <bean id="txManager"
- class="org.springframework.orm.hibernate3.HibernateTransactionManager">
- <property name="sessionFactory" ref="sessionFactory" />
- </bean>
- <aop:config>
- <aop:pointcut id="bussinessService"
- expression="execution(public * com.liuzd.s2sh.service.*.*(..))" />
- <aop:advisor pointcut-ref="bussinessService"
- advice-ref="txAdvice" />
- </aop:config>
- <tx:advice id="txAdvice" transaction-manager="txManager">
- <tx:attributes>
- <tx:method name="*" />
- <tx:method name="add*" propagation="REQUIRED"/>
- <tx:method name="del*" propagation="REQUIRED"/>
- <tx:method name="edit*" propagation="REQUIRED"/>
- </tx:attributes>
- </tx:advice>
- </beans>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <context:annotation-config /> <context:component-scan base-package="com.liuzd.s2sh" /> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <value>classpath:jdbc.properties</value> </property> </bean> <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="${jdbc.driverClassName}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <property name="packagesToScan"> <list> <value>com.liuzd.s2sh.entity</value> </list> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect"> org.hibernate.dialect.Oracle10gDialect </prop> <prop key="hibernate.show_sql">true</prop> <prop key="format_sql">true</prop> </props> </property> </bean> <!-- 让spring管理sessionFactory的加一种方法 ,就是不删除hibernate.cfg.xml文件; <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"> <property name="configLocation"> <value>classpath:hibernate.cfg.xml</value> </property> </bean> --> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"></property> </bean> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory" /> </bean> <aop:config> <aop:pointcut id="bussinessService" expression="execution(public * com.liuzd.s2sh.service.*.*(..))" /> <aop:advisor pointcut-ref="bussinessService" advice-ref="txAdvice" /> </aop:config> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="*" /> <tx:method name="add*" propagation="REQUIRED"/> <tx:method name="del*" propagation="REQUIRED"/> <tx:method name="edit*" propagation="REQUIRED"/> </tx:attributes> </tx:advice> </beans>
jdbc.properties属性文件如下:
- jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
- jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
- jdbc.username=liuzd
- jdbc.password=liuzd
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl jdbc.username=liuzd jdbc.password=liuzd
log4j.properties属性文件如下:
- log4j.appender.stdout=org.apache.log4j.ConsoleAppender
- log4j.appender.stdout.Target=System.out
- log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
- log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
- log4j.appender.db=org.apache.log4j.FileAppender
- log4j.appender.db.File=${s2sh.root}/WEB-INF/logs/ssh.log
- log4j.appender.db.Append=true
- log4j.appender.db.layout=org.apache.log4j.PatternLayout
- log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.Target=System.out log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.appender.db=org.apache.log4j.FileAppender log4j.appender.db.File=${s2sh.root}/WEB-INF/logs/ssh.log log4j.appender.db.Append=true log4j.appender.db.layout=org.apache.log4j.PatternLayout log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n
2 Java代码如下:
A WEB层:
BaseAction Code:
- import java.util.Map;
- import javax.servlet.http.HttpServletRequest;
- import org.apache.struts2.ServletActionContext;
- import org.apache.struts2.interceptor.SessionAware;
- import com.opensymphony.xwork2.ActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class BaseAction extends ActionSupport implements SessionAware{
- private static final long serialVersionUID = 1L;
- public void setSession(Map<String, Object> sessionMap) {
- }
- protected Map<String,Object> getSession(){
- return (Map<String,Object>)ActionContext.getContext().getSession();
- }
- protected HttpServletRequest getRequest(){
- return ServletActionContext.getRequest ();
- }
- }
import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import org.apache.struts2.interceptor.SessionAware; import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; public class BaseAction extends ActionSupport implements SessionAware{ private static final long serialVersionUID = 1L; public void setSession(Map<String, Object> sessionMap) { } protected Map<String,Object> getSession(){ return (Map<String,Object>)ActionContext.getContext().getSession(); } protected HttpServletRequest getRequest(){ return ServletActionContext.getRequest (); } }
UserAction Code:
- import java.util.List;
- import javax.annotation.Resource;
- import org.springframework.context.annotation.Scope;
- import org.springframework.stereotype.Component;
- import com.liuzd.s2sh.entity.User;
- import com.liuzd.s2sh.service.UserService;
- @Component("u")
- @Scope("prototype")
- public class UserAction extends BaseAction {
- private static final long serialVersionUID = 1L;
- private UserService userService = null;
- private String message = null;
- private User user = null;
- private String action = null;
- public String getAction() {
- return action;
- }
- public void setAction(String action) {
- this.action = action;
- }
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- @Override
- public String execute() throws Exception {
- System.out.println("user: "+user);
- User dbUser = this.userService.checkUserExits(user);
- if (null != dbUser) {
- message = "用户: " + user.getUsername() + "登录成功";
- System.out.println(message);
- getSession().put("sessionUser",dbUser);
- return userList();
- }
- message = "用户: " + user.getUsername() + "登录失败";
- return "fail";
- }
- public String loadUser(){
- action = "update";
- message = "编辑用户信息";
- User loadUser = new User();
- loadUser.setId(user.getId());
- user = this.userService.getUserByUid(loadUser);
- this.getRequest().setAttribute("myname","天涯海角");
- this.getSession().put("mysex", "男");
- System.out.println("loaduser: "+user);
- return "user";
- }
- public String addUser(){
- action = "add";
- return "user";
- }
- public String saveUser(){
- this.userService.addUser(user);
- return "user";
- }
- public String delUser(){
- action = "del";
- this.userService.delUser(user);
- return userList();
- }
- public String editUser(){
- System.out.println("action: "+action+",编辑用户: "+user);
- if("update".equals(action)){
- this.userService.editUser(user);
- }else if("add".equals(action)){
- saveUser();
- }
- return userList();
- }
- public String userList(){
- List<User> userList = this.userService.getUserList();
- System.out.println("usersize: "+userList.size() + ",user: " + userList.get(0));
- getRequest().setAttribute("userList", userList);
- return "userList";
- }
- public UserService getUserService() {
- return userService;
- }
- @Resource
- public void setUserService(UserService userService) {
- this.userService = userService;
- }
- public String getMessage() {
- return message;
- }
- public void setMessage(String message) {
- this.message = message;
- }
- }
import java.util.List; import javax.annotation.Resource; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; import com.liuzd.s2sh.entity.User; import com.liuzd.s2sh.service.UserService; @Component("u") @Scope("prototype") public class UserAction extends BaseAction { private static final long serialVersionUID = 1L; private UserService userService = null; private String message = null; private User user = null; private String action = null; public String getAction() { return action; } public void setAction(String action) { this.action = action; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String execute() throws Exception { System.out.println("user: "+user); User dbUser = this.userService.checkUserExits(user); if (null != dbUser) { message = "用户: " + user.getUsername() + "登录成功"; System.out.println(message); getSession().put("sessionUser",dbUser); return userList(); } message = "用户: " + user.getUsername() + "登录失败"; return "fail"; } public String loadUser(){ action = "update"; message = "编辑用户信息"; User loadUser = new User(); loadUser.setId(user.getId()); user = this.userService.getUserByUid(loadUser); this.getRequest().setAttribute("myname","天涯海角"); this.getSession().put("mysex", "男"); System.out.println("loaduser: "+user); return "user"; } public String addUser(){ action = "add"; return "user"; } public String saveUser(){ this.userService.addUser(user); return "user"; } public String delUser(){ action = "del"; this.userService.delUser(user); return userList(); } public String editUser(){ System.out.println("action: "+action+",编辑用户: "+user); if("update".equals(action)){ this.userService.editUser(user); }else if("add".equals(action)){ saveUser(); } return userList(); } public String userList(){ List<User> userList = this.userService.getUserList(); System.out.println("usersize: "+userList.size() + ",user: " + userList.get(0)); getRequest().setAttribute("userList", userList); return "userList"; } public UserService getUserService() { return userService; } @Resource public void setUserService(UserService userService) { this.userService = userService; } public String getMessage() { return message; } public void setMessage(String message) { this.message = message; } }
Service层:
UserService Code:
- import java.util.List;
- import com.liuzd.s2sh.entity.User;
- public interface UserService {
- public User checkUserExits(User user) throws Exception;
- public void addUser(User user);
- public void editUser(User user);
- public void delUser(User user);
- public List<User> getUserList();
- public User getUserByUid(User user);
- }
import java.util.List; import com.liuzd.s2sh.entity.User; public interface UserService { public User checkUserExits(User user) throws Exception; public void addUser(User user); public void editUser(User user); public void delUser(User user); public List<User> getUserList(); public User getUserByUid(User user); }
UserServiceImpl Code:
- import java.util.List;
- import javax.annotation.Resource;
- import org.springframework.stereotype.Component;
- import com.liuzd.s2sh.dao.UserDAO;
- import com.liuzd.s2sh.entity.User;
- import com.liuzd.s2sh.service.UserService;
- @Component("userService")
- public class UserServiceImpl implements UserService {
- private UserDAO userDao = null;
- public UserDAO getUserDao() {
- return userDao;
- }
- @Resource
- public void setUserDao(UserDAO userDao) {
- this.userDao = userDao;
- }
- public User checkUserExits(User user) throws Exception {
- return this.userDao.getUserByUserIdAndUserNameExits(user);
- }
- @Override
- public void delUser(User user) {
- this.userDao.delUser(user);
- }
- @Override
- public User getUserByUid(User user) {
- return this.userDao.getUser(user);
- }
- @Override
- public List<User> getUserList() {
- return this.userDao.finUserAll();
- }
- @Override
- public void addUser(User user) {
- String id =String.valueOf(new java.util.Random().nextInt(100));
- //user.setId(id);
- System.out.println("添加: "+user);
- this.userDao.saveUser(user);
- }
- @Override
- public void editUser(User user) {
- this.userDao.updateUser(user);
- }
- }
import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Component; import com.liuzd.s2sh.dao.UserDAO; import com.liuzd.s2sh.entity.User; import com.liuzd.s2sh.service.UserService; @Component("userService") public class UserServiceImpl implements UserService { private UserDAO userDao = null; public UserDAO getUserDao() { return userDao; } @Resource public void setUserDao(UserDAO userDao) { this.userDao = userDao; } public User checkUserExits(User user) throws Exception { return this.userDao.getUserByUserIdAndUserNameExits(user); } @Override public void delUser(User user) { this.userDao.delUser(user); } @Override public User getUserByUid(User user) { return this.userDao.getUser(user); } @Override public List<User> getUserList() { return this.userDao.finUserAll(); } @Override public void addUser(User user) { String id =String.valueOf(new java.util.Random().nextInt(100)); //user.setId(id); System.out.println("添加: "+user); this.userDao.saveUser(user); } @Override public void editUser(User user) { this.userDao.updateUser(user); } }
Entity层:
User Code:
- @Entity
- @Table(name="users")
- public class User {
- private String id = null;
- private String username = null;
- private String password = null;
- private String address = null;
- private String sex = null;
- private Integer age = null;
- public String getAddress() {
- return address;
- }
- public void setAddress(String address) {
- this.address = address;
- }
- public Integer getAge() {
- return age;
- }
- public void setAge(Integer age) {
- this.age = age;
- }
- public String getUsername() {
- return username;
- }
- public void setUsername(String username) {
- this.username = username;
- }
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- /*
- * 适合ID为int,short,long的情况
- * @Id
- @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ_USER")
- @SequenceGenerator(name="SEQ_USER",sequenceName="S_USER",allocationSize=1)
- */
- @Id
- @GeneratedValue(generator="system-uuid")
- @GenericGenerator(name="system-uuid", strategy = "uuid")
- public String getId() {
- return id;
- }
- public void setId(String id) {
- this.id = id;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- @Override
- public String toString() {
- return "name: " + username + ",password: " + password+",sex: " + sex + ",age: " + age+",address: " + address + ",id: " + id;
- }
- }
@Entity @Table(name="users") public class User { private String id = null; private String username = null; private String password = null; private String address = null; private String sex = null; private Integer age = null; public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } /* * 适合ID为int,short,long的情况 * @Id @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ_USER") @SequenceGenerator(name="SEQ_USER",sequenceName="S_USER",allocationSize=1) */ @Id @GeneratedValue(generator="system-uuid") @GenericGenerator(name="system-uuid", strategy = "uuid") public String getId() { return id; } public void setId(String id) { this.id = id; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } @Override public String toString() { return "name: " + username + ",password: " + password+",sex: " + sex + ",age: " + age+",address: " + address + ",id: " + id; } }
DAO层:
UserDAO Code:
- import java.util.List;
- import com.liuzd.s2sh.entity.User;
- public interface UserDAO {
- /**
- * 检查用户是否存在
- * */
- public User getUserByUserIdAndUserNameExits(User user);
- public void saveUser(User user);
- public void updateUser(User user);
- public User getUser(User user);
- public void delUser(User user);
- public List<User> finUserAll();
- }
import java.util.List; import com.liuzd.s2sh.entity.User; public interface UserDAO { /** * 检查用户是否存在 * */ public User getUserByUserIdAndUserNameExits(User user); public void saveUser(User user); public void updateUser(User user); public User getUser(User user); public void delUser(User user); public List<User> finUserAll(); }
UserDAOImpl Code:
- import java.util.List;
- import javax.annotation.Resource;
- import org.springframework.orm.hibernate3.HibernateTemplate;
- import org.springframework.stereotype.Component;
- import com.liuzd.s2sh.dao.UserDAO;
- import com.liuzd.s2sh.entity.User;
- @Component("userDao")
- public class UserDAOImpl implements UserDAO {
- private HibernateTemplate hibernateTemplate;
- public HibernateTemplate getHibernateTemplate() {
- return hibernateTemplate;
- }
- @Resource
- public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
- this.hibernateTemplate = hibernateTemplate;
- }
- public User getUserByUserIdAndUserNameExits(User user) {
- List<User> users = hibernateTemplate.find("from User u where u.username = '" + user.getUsername() + "' and u.password='"+user.getPassword()+"'");
- if (users != null && users.size() > 0) {
- return users.get(0);
- }
- return null;
- }
- @Override
- public void saveUser(User user) {
- this.hibernateTemplate.save(user);
- }
- @Override
- public void delUser(User user) {
- User delUser = getUser(user);
- this.hibernateTemplate.delete(delUser);
- }
- @Override
- public List<User> finUserAll() {
- return this.hibernateTemplate.find("from User");
- }
- @Override
- public User getUser(User user) {
- return this.hibernateTemplate.load(User.class,user.getId());
- }
- @Override
- public void updateUser(User user) {
- this.hibernateTemplate.update(user);
- }
- }
import java.util.List; import javax.annotation.Resource; import org.springframework.orm.hibernate3.HibernateTemplate; import org.springframework.stereotype.Component; import com.liuzd.s2sh.dao.UserDAO; import com.liuzd.s2sh.entity.User; @Component("userDao") public class UserDAOImpl implements UserDAO { private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } @Resource public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } public User getUserByUserIdAndUserNameExits(User user) { List<User> users = hibernateTemplate.find("from User u where u.username = '" + user.getUsername() + "' and u.password='"+user.getPassword()+"'"); if (users != null && users.size() > 0) { return users.get(0); } return null; } @Override public void saveUser(User user) { this.hibernateTemplate.save(user); } @Override public void delUser(User user) { User delUser = getUser(user); this.hibernateTemplate.delete(delUser); } @Override public List<User> finUserAll() { return this.hibernateTemplate.find("from User"); } @Override public User getUser(User user) { return this.hibernateTemplate.load(User.class,user.getId()); } @Override public void updateUser(User user) { this.hibernateTemplate.update(user); } }
3 JSp代码如下:
Login.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <html>
- <head>
- <title>Sign On</title>
- </head>
- <body>
- <s:form action="userAction">
- <s:textfield key="user.username"/>
- <s:password key="user.password" />
- <s:submit/>
- </s:form>
- </body>
- </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>Sign On</title> </head> <body> <s:form action="userAction"> <s:textfield key="user.username"/> <s:password key="user.password" /> <s:submit/> </s:form> </body> </html>
Success.jsp,fail.jsp
- <%@ page contentType="text/html; charset=UTF-8" %>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <html>
- <head>
- </head>
- <body>
- <s:property value="message"/><br>
- <a href="${pageContext.request.contextPath}">返回</a>
- <s:debug></s:debug>
- </body>
- </html>
<%@ page contentType="text/html; charset=UTF-8" %> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> </head> <body> <s:property value="message"/><br> <a href="${pageContext.request.contextPath}">返回</a> <s:debug></s:debug> </body> </html>
User.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <html>
- <head>
- <title>用户信息</title>
- </head>
- <body>
- <s:form action="userAction!editUser.action">
- <input type="hidden" name="action" value='<s:property value="action"/>'/>
- <s:property value="message"/><br>
- <s:if test="user.id != null">
- <s:property value="user.id"/>,<s:property value="user.username"/>,
- <s:property value="user.age"/>,<s:property value="user.sex"/>,
- <s:property value="user.address"/>,<s:property value="user.password"/>,
- <s:property value="#request.myname"/>,<s:property value="#session.mysex"/>
- </s:if>
- <br>
- <table>
- <tr>
- <td>
- <s:hidden name="user.id"/>
- <s:textfield label="姓名" name="user.username"/>
- </td>
- </tr>
- <tr>
- <td>
- <s:textfield label="年龄" name="user.age"/>
- </td>
- </tr>
- <tr>
- <td>
- <s:select label="性别" name="user.sex"
- list="#{ 1:'男', 2: '女', 3: '未知'}"
- listKey="key"
- listValue="value"
- ></s:select>
- </td>
- </tr>
- <tr>
- <td>
- <s:textfield label="密码" name="user.password" size="50"/>
- </td>
- </tr>
- <tr>
- <td>
- <s:textfield label="地址" name="user.address"/>
- </td>
- </tr>
- <tr>
- <td align="right">
- <s:submit vlaue="保存"/>
- </td>
- </tr>
- </table>
- </s:form>
- <br>
- <s:debug></s:debug>
- <br>
- <a href="${pageContext.request.contextPath}">返回主页</a><br>
- <s:a href="userAction!userList.action">返回显示</s:a>
- </body>
- </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <html> <head> <title>用户信息</title> </head> <body> <s:form action="userAction!editUser.action"> <input type="hidden" name="action" value='<s:property value="action"/>'/> <s:property value="message"/><br> <s:if test="user.id != null"> <s:property value="user.id"/>,<s:property value="user.username"/>, <s:property value="user.age"/>,<s:property value="user.sex"/>, <s:property value="user.address"/>,<s:property value="user.password"/>, <s:property value="#request.myname"/>,<s:property value="#session.mysex"/> </s:if> <br> <table> <tr> <td> <s:hidden name="user.id"/> <s:textfield label="姓名" name="user.username"/> </td> </tr> <tr> <td> <s:textfield label="年龄" name="user.age"/> </td> </tr> <tr> <td> <s:select label="性别" name="user.sex" list="#{ 1:'男', 2: '女', 3: '未知'}" listKey="key" listValue="value" ></s:select> </td> </tr> <tr> <td> <s:textfield label="密码" name="user.password" size="50"/> </td> </tr> <tr> <td> <s:textfield label="地址" name="user.address"/> </td> </tr> <tr> <td align="right"> <s:submit vlaue="保存"/> </td> </tr> </table> </s:form> <br> <s:debug></s:debug> <br> <a href="${pageContext.request.contextPath}">返回主页</a><br> <s:a href="userAction!userList.action">返回显示</s:a> </body> </html>
UserList.jsp
- <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
- <%@ taglib prefix="s" uri="/struts-tags" %>
- <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>
- <html>
- <head>
- <title>用户集合</title>
- </head>
- <body>
- <table width="50%" border="1" cellpadding="1" align="center">
- <thead>
- <tr>
- <th>姓名</th>
- <th>年龄</th>
- <th>性别</th>
- <th>地址</th>
- <th>操作</th>
- </tr>
- </thead>
- <tbody>
- <!--
- <s:iterator value="#request.userList" status="status" >
- <tr align="center">
- <td><s:property value="username"/></td>
- <td><s:property value="age"/></td>
- <td><s:property value="sex"/></td>
- <td><s:property value="address"/></td>
- <td>
- <s:a href="userAction!addUser.action">添加</s:a> | <s:a href="userAction!loadUser.action?user.id=%{id}">编辑</s:a> |
- <a href="<s:url action="userAction!delUser.action"><s:param name="user.id" value="id"/></s:url>">删除</a>
- </td>
- </tr>
- </s:iterator>
- -->
- <c:forEach items="${requestScope.userList}" var="user">
- <tr align="center">
- <td>${user.username}</td>
- <td>${user.age}</td>
- <td>${user.sex eq 1 ? "男" : user.sex eq 2 ? "女" : "未知"}</td>
- <td>${user.address}</td>
- <td>
- <a href="${pageContext.request.contextPath}/userAction!addUser.action">添加</a> |
- <a href="${pageContext.request.contextPath}/userAction!loadUser.action?user.id=${user.id}">编辑</a> |
- <a href="${pageContext.request.contextPath}/userAction!delUser.action?user.id=${user.id}">删除</a>
- </td>
- </tr>
- </c:forEach>
- </tbody>
- </table>
- <br>
- <a href="${pageContext.request.contextPath}">返回</a>
- <br>
- </body>
- </html>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %> <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%> <html> <head> <title>用户集合</title> </head> <body> <table width="50%" border="1" cellpadding="1" align="center"> <thead> <tr> <th>姓名</th> <th>年龄</th> <th>性别</th> <th>地址</th> <th>操作</th> </tr> </thead> <tbody> <!-- <s:iterator value="#request.userList" status="status" > <tr align="center"> <td><s:property value="username"/></td> <td><s:property value="age"/></td> <td><s:property value="sex"/></td> <td><s:property value="address"/></td> <td> <s:a href="userAction!addUser.action">添加</s:a> | <s:a href="userAction!loadUser.action?user.id=%{id}">编辑</s:a> | <a href="<s:url action="userAction!delUser.action"><s:param name="user.id" value="id"/></s:url>">删除</a> </td> </tr> </s:iterator> --> <c:forEach items="${requestScope.userList}" var="user"> <tr align="center"> <td>${user.username}</td> <td>${user.age}</td> <td>${user.sex eq 1 ? "男" : user.sex eq 2 ? "女" : "未知"}</td> <td>${user.address}</td> <td> <a href="${pageContext.request.contextPath}/userAction!addUser.action">添加</a> | <a href="${pageContext.request.contextPath}/userAction!loadUser.action?user.id=${user.id}">编辑</a> | <a href="${pageContext.request.contextPath}/userAction!delUser.action?user.id=${user.id}">删除</a> </td> </tr> </c:forEach> </tbody> </table> <br> <a href="${pageContext.request.contextPath}">返回</a> <br> </body> </html>
4 Oracle.sql
- create table USERS
- (
- id VARCHAR2(50) not null,
- username VARCHAR2(50),
- age NUMBER,
- sex VARCHAR2(1),
- address VARCHAR2(200),
- password VARCHAR2(20)
- );
- alter table USERS add constraint PKUID primary key (ID);
- insert into USERS (ID, USERNAME, AGE, SEX, ADDRESS, PASSWORD, ROWID)
- values ('001', 'spring', 25, '1', '成都市', 'spring', '');
- commit;
- 代码 http://liuzidong.iteye.com/blog/935493