Struts2.2+Spring3.1+Hibernate3.6整合(登录示例及CRUD操作)

一 运行环境: 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代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="2.4"  
  3.  xmlns="http://java.sun.com/xml/ns/j2ee"  
  4.  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.  xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   
  6.  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">  
  7.   
  8.     <context-param>  
  9.       <param-name>webAppRootKey</param-name>  
  10.       <param-value>s2sh.root</param-value>  
  11.      </context-param>  
  12.   
  13.     <context-param>  
  14.         <param-name>  
  15.             contextConfigLocation  
  16.         </param-name>  
  17.         <param-value>  
  18.             classpath*:applicationContext.xml  
  19.         </param-value>  
  20.     </context-param>  
  21.       
  22.     <context-param>  
  23.        <param-name>log4jConfigLocation</param-name>  
  24.        <param-value>/WEB-INF/classes/log4j.properties</param-value>  
  25.     </context-param>   
  26.       
  27.      <context-param>  
  28.       <param-name>log4jRefreshInterval</param-name>  
  29.       <param-value>60000</param-value>  
  30.      </context-param>   
  31.      <context-param>  
  32.         <param-name>log4jExposeWebAppRoot</param-name>  
  33.         <param-value>false</param-value>  
  34.     </context-param>  
  35.       
  36.     <listener>  
  37.         <listener-class>  
  38.             org.springframework.web.context.ContextLoaderListener  
  39.         </listener-class>  
  40.     </listener>     
  41.       
  42.     <listener>  
  43.        <listener-class>  
  44.             org.springframework.web.util.Log4jConfigListener  
  45.        </listener-class>  
  46.     </listener>       
  47.       
  48.     <filter>  
  49.         <filter-name>  
  50.             encodingFilter  
  51.         </filter-name>  
  52.         <filter-class>  
  53.             org.springframework.web.filter.CharacterEncodingFilter  
  54.         </filter-class>  
  55.         <init-param>  
  56.             <param-name>  
  57.                 encoding  
  58.             </param-name>  
  59.             <param-value>  
  60.                 UTF-8  
  61.             </param-value>  
  62.         </init-param>  
  63.     </filter>  
  64.       
  65.     <filter-mapping>  
  66.         <filter-name>  
  67.             encodingFilter  
  68.         </filter-name>  
  69.         <url-pattern>  
  70.             /*  
  71.         </url-pattern>  
  72.     </filter-mapping>  
  73.       
  74.     <filter>  
  75.         <filter-name>  
  76.             openSessionInView  
  77.         </filter-name>  
  78.         <filter-class>  
  79.             org.springframework.orm.hibernate3.support.OpenSessionInViewFilter  
  80.         </filter-class>  
  81.     </filter>  
  82.       
  83.     <filter-mapping>  
  84.         <filter-name>  
  85.             openSessionInView  
  86.         </filter-name>  
  87.         <url-pattern>  
  88.             /*  
  89.         </url-pattern>  
  90.     </filter-mapping>  
  91.       
  92.       
  93.     <filter>  
  94.         <filter-name>  
  95.             struts2  
  96.         </filter-name>  
  97.         <filter-class>  
  98.             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter  
  99.         </filter-class>  
  100.     </filter>  
  101.       
  102.     <filter-mapping>  
  103.         <filter-name>  
  104.             struts2  
  105.         </filter-name>  
  106.         <url-pattern>  
  107.             /*  
  108.         </url-pattern>  
  109.     </filter-mapping>  
  110.       
  111.     <welcome-file-list>  
  112.         <welcome-file>  
  113.             index.jsp  
  114.         </welcome-file>  
  115.     </welcome-file-list>  
  116. </web-app>  


Struts2.xml文件如下: 
Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC  
  3.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  4.     "http://struts.apache.org/dtds/struts-2.0.dtd">        
  5. <struts>  
  6.     <package name="user" extends="struts-default">  
  7.         <action name="userAction" class="u">  
  8.             <result name="success">success.jsp</result>  
  9.             <result name="userList">userList.jsp</result>  
  10.             <result name="fail">fail.jsp</result>  
  11.             <result name="user">user.jsp</result>  
  12.         </action>   
  13.     </package>      
  14. </struts>  


applicationContext.xml配置文件如下: 

Xml代码   收藏代码
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans xmlns="http://www.springframework.org/schema/beans"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xmlns:context="http://www.springframework.org/schema/context"  
  5.     xmlns:aop="http://www.springframework.org/schema/aop"  
  6.     xmlns:tx="http://www.springframework.org/schema/tx"  
  7.     xsi:schemaLocation="http://www.springframework.org/schema/beans  
  8.            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
  9.            http://www.springframework.org/schema/context  
  10.            http://www.springframework.org/schema/context/spring-context-3.0.xsd  
  11.            http://www.springframework.org/schema/aop  
  12.            http://www.springframework.org/schema/aop/spring-aop-3.0.xsd  
  13.            http://www.springframework.org/schema/tx   
  14.            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">  
  15.              
  16.     <context:annotation-config />  
  17.     <context:component-scan base-package="com.liuzd.s2sh" />  
  18.   
  19.     <bean  
  20.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  21.         <property name="locations">  
  22.             <value>classpath:jdbc.properties</value>  
  23.         </property>  
  24.     </bean>  
  25.   
  26.     <bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">  
  27.         <property name="driverClassName"  
  28.             value="${jdbc.driverClassName}" />  
  29.         <property name="url" value="${jdbc.url}" />  
  30.         <property name="username" value="${jdbc.username}" />  
  31.         <property name="password" value="${jdbc.password}" />  
  32.     </bean>  
  33.       
  34.       
  35.   
  36.     <bean id="sessionFactory"  
  37.         class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">  
  38.         <property name="dataSource" ref="dataSource" />         
  39.          <property name="packagesToScan">  
  40.             <list>  
  41.                 <value>com.liuzd.s2sh.entity</value>                  
  42.             </list>  
  43.         </property>  
  44.         <property name="hibernateProperties">  
  45.             <props>  
  46.                 <prop key="hibernate.dialect">  
  47.                     org.hibernate.dialect.Oracle10gDialect  
  48.                 </prop>  
  49.                 <prop key="hibernate.show_sql">true</prop>  
  50.                 <prop key="format_sql">true</prop>  
  51.             </props>  
  52.         </property>  
  53.     </bean>  
  54.       
  55.     <!-- 让spring管理sessionFactory的加一种方法 ,就是不删除hibernate.cfg.xml文件;  
  56.      <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  57.       <property name="configLocation">  
  58.        <value>classpath:hibernate.cfg.xml</value>  
  59.       </property>  
  60.      </bean>  
  61.     -->   
  62.       
  63.     <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate">  
  64.         <property name="sessionFactory" ref="sessionFactory"></property>  
  65.     </bean>  
  66.       
  67.     <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">  
  68.        <property name="dataSource" ref="dataSource"></property>  
  69.   
  70. </bean>  
  71.   
  72.     <bean id="txManager"  
  73.         class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
  74.         <property name="sessionFactory" ref="sessionFactory" />  
  75.     </bean>  
  76.   
  77.     <aop:config>  
  78.         <aop:pointcut id="bussinessService"  
  79.             expression="execution(public * com.liuzd.s2sh.service.*.*(..))" />  
  80.         <aop:advisor pointcut-ref="bussinessService"  
  81.             advice-ref="txAdvice" />  
  82.     </aop:config>  
  83.   
  84.     <tx:advice id="txAdvice" transaction-manager="txManager">  
  85.         <tx:attributes>  
  86.             <tx:method name="*" />    
  87.             <tx:method name="add*" propagation="REQUIRED"/>  
  88.             <tx:method name="del*" propagation="REQUIRED"/>  
  89.             <tx:method name="edit*" propagation="REQUIRED"/>  
  90.         </tx:attributes>  
  91.     </tx:advice>  
  92. </beans>  

jdbc.properties属性文件如下: 
Properties代码   收藏代码
  1. jdbc.driverClassName=oracle.jdbc.driver.OracleDriver  
  2. jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl  
  3. jdbc.username=liuzd  
  4. jdbc.password=liuzd  

log4j.properties属性文件如下: 
Properties代码   收藏代码
  1. log4j.appender.stdout=org.apache.log4j.ConsoleAppender  
  2. log4j.appender.stdout.Target=System.out  
  3. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout  
  4. log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n  
  5. log4j.appender.db=org.apache.log4j.FileAppender  
  6. log4j.appender.db.File=${s2sh.root}/WEB-INF/logs/ssh.log  
  7. log4j.appender.db.Append=true  
  8. log4j.appender.db.layout=org.apache.log4j.PatternLayout  
  9. log4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n  

2 Java代码如下: 
A WEB层: 
BaseAction Code: 

Java代码   收藏代码
  1. import java.util.Map;  
  2.   
  3. import javax.servlet.http.HttpServletRequest;  
  4.   
  5. import org.apache.struts2.ServletActionContext;  
  6. import org.apache.struts2.interceptor.SessionAware;  
  7.   
  8. import com.opensymphony.xwork2.ActionContext;  
  9. import com.opensymphony.xwork2.ActionSupport;  
  10.   
  11. public class BaseAction extends ActionSupport implements SessionAware{  
  12.       
  13.     private static final long serialVersionUID = 1L;  
  14.   
  15.     public void setSession(Map<String, Object> sessionMap) {        
  16.           
  17.     }     
  18.       
  19.     protected Map<String,Object> getSession(){  
  20.         return  (Map<String,Object>)ActionContext.getContext().getSession();  
  21.     }  
  22.       
  23.     protected HttpServletRequest getRequest(){  
  24.         return ServletActionContext.getRequest ();   
  25.     }  
  26. }  


UserAction Code: 

Java代码   收藏代码
  1. import java.util.List;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.context.annotation.Scope;  
  6. import org.springframework.stereotype.Component;  
  7.   
  8. import com.liuzd.s2sh.entity.User;  
  9. import com.liuzd.s2sh.service.UserService;  
  10.   
  11. @Component("u")  
  12. @Scope("prototype")  
  13. public class UserAction extends BaseAction {  
  14.   
  15.     private static final long serialVersionUID = 1L;  
  16.   
  17.     private UserService userService = null;  
  18.     private String message = null;  
  19.   
  20.     private User user = null;  
  21.       
  22.     private String action = null;  
  23.   
  24.     public String getAction() {  
  25.         return action;  
  26.     }  
  27.   
  28.     public void setAction(String action) {  
  29.         this.action = action;  
  30.     }  
  31.   
  32.     public User getUser() {  
  33.         return user;  
  34.     }  
  35.   
  36.     public void setUser(User user) {  
  37.         this.user = user;  
  38.     }  
  39.   
  40.     @Override  
  41.     public String execute() throws Exception {  
  42.         System.out.println("user: "+user);  
  43.           
  44.         User dbUser = this.userService.checkUserExits(user);  
  45.         if (null != dbUser) {  
  46.             message = "用户: " + user.getUsername() + "登录成功";  
  47.             System.out.println(message);  
  48.             getSession().put("sessionUser",dbUser);  
  49.             return userList();  
  50.         }  
  51.         message = "用户: " + user.getUsername() + "登录失败";  
  52.         return "fail";  
  53.     }  
  54.       
  55.     public String loadUser(){  
  56.          action = "update";  
  57.          message = "编辑用户信息";  
  58.          User loadUser = new User();  
  59.          loadUser.setId(user.getId());  
  60.          user = this.userService.getUserByUid(loadUser);  
  61.          this.getRequest().setAttribute("myname","天涯海角");  
  62.          this.getSession().put("mysex""男");  
  63.          System.out.println("loaduser: "+user);        
  64.          return "user";  
  65.     }  
  66.       
  67.     public String addUser(){  
  68.          action = "add";          
  69.          return "user";  
  70.     }  
  71.       
  72.     public String saveUser(){  
  73.          this.userService.addUser(user);          
  74.          return "user";  
  75.     }  
  76.       
  77.     public String delUser(){      
  78.         action = "del";  
  79.         this.userService.delUser(user);  
  80.         return userList();  
  81.     }  
  82.       
  83.     public String editUser(){  
  84.          System.out.println("action: "+action+",编辑用户: "+user);  
  85.          if("update".equals(action)){  
  86.            this.userService.editUser(user);  
  87.          }else if("add".equals(action)){  
  88.              saveUser();  
  89.          }  
  90.          return userList();  
  91.     }  
  92.       
  93.     public String userList(){  
  94.          List<User> userList = this.userService.getUserList();  
  95.          System.out.println("usersize: "+userList.size() + ",user: " + userList.get(0));  
  96.          getRequest().setAttribute("userList", userList);  
  97.          return "userList";  
  98.     }  
  99.   
  100.     public UserService getUserService() {  
  101.         return userService;  
  102.     }  
  103.   
  104.     @Resource  
  105.     public void setUserService(UserService userService) {  
  106.         this.userService = userService;  
  107.     }  
  108.   
  109.     public String getMessage() {  
  110.         return message;  
  111.     }  
  112.   
  113.     public void setMessage(String message) {  
  114.         this.message = message;  
  115.     }  
  116.   
  117. }  


Service层: 
UserService Code: 

Java代码   收藏代码
  1. import java.util.List;  
  2.   
  3. import com.liuzd.s2sh.entity.User;  
  4.   
  5. public interface UserService {  
  6.       
  7.     public User checkUserExits(User user) throws Exception;   
  8.     public void addUser(User user);  
  9.     public void editUser(User user);  
  10.     public void delUser(User user);  
  11.     public List<User> getUserList();  
  12.     public User getUserByUid(User user);  
  13.   
  14. }  


UserServiceImpl Code: 

Java代码   收藏代码
  1. import java.util.List;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.stereotype.Component;  
  6.   
  7. import com.liuzd.s2sh.dao.UserDAO;  
  8. import com.liuzd.s2sh.entity.User;  
  9. import com.liuzd.s2sh.service.UserService;  
  10.   
  11. @Component("userService")  
  12. public class UserServiceImpl implements UserService {  
  13.   
  14.     private UserDAO userDao = null;  
  15.   
  16.     public UserDAO getUserDao() {  
  17.         return userDao;  
  18.     }  
  19.   
  20.     @Resource  
  21.     public void setUserDao(UserDAO userDao) {  
  22.         this.userDao = userDao;  
  23.     }  
  24.   
  25.     public User checkUserExits(User user) throws Exception {  
  26.         return this.userDao.getUserByUserIdAndUserNameExits(user);        
  27.     }  
  28.   
  29.     @Override  
  30.     public void delUser(User user) {  
  31.         this.userDao.delUser(user);       
  32.     }  
  33.   
  34.     @Override  
  35.     public User getUserByUid(User user) {         
  36.         return this.userDao.getUser(user);        
  37.     }  
  38.   
  39.     @Override  
  40.     public List<User> getUserList() {       
  41.         return this.userDao.finUserAll();  
  42.     }  
  43.   
  44.     @Override  
  45.     public void addUser(User user) {  
  46.         String id =String.valueOf(new java.util.Random().nextInt(100));       
  47.         //user.setId(id);  
  48.         System.out.println("添加: "+user);  
  49.         this.userDao.saveUser(user);          
  50.     }  
  51.   
  52.     @Override  
  53.     public void editUser(User user) {  
  54.         this.userDao.updateUser(user);    
  55.     }  
  56. }  


Entity层: 
User Code: 

Java代码   收藏代码
  1. @Entity  
  2. @Table(name="users")  
  3. public class User {  
  4.       
  5.     private String id = null;  
  6.     private String username = null;  
  7.     private String password = null;   
  8.     private String address = null;  
  9.     private String sex = null;  
  10.     private Integer age = null;  
  11.       
  12.     public String getAddress() {  
  13.         return address;  
  14.     }  
  15.     public void setAddress(String address) {  
  16.         this.address = address;  
  17.     }  
  18.     public Integer getAge() {  
  19.         return age;  
  20.     }  
  21.     public void setAge(Integer age) {  
  22.         this.age = age;  
  23.     }  
  24.     public String getUsername() {  
  25.         return username;  
  26.     }  
  27.     public void setUsername(String username) {  
  28.         this.username = username;  
  29.     }  
  30.     public String getPassword() {  
  31.         return password;  
  32.     }  
  33.     public void setPassword(String password) {  
  34.         this.password = password;         
  35.     }  
  36.   
  37.     /* 
  38.      * 适合ID为int,short,long的情况 
  39.      * @Id   
  40.     @GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ_USER") 
  41.     @SequenceGenerator(name="SEQ_USER",sequenceName="S_USER",allocationSize=1) 
  42.     */  
  43.       
  44.     @Id   
  45.     @GeneratedValue(generator="system-uuid")  
  46.     @GenericGenerator(name="system-uuid", strategy = "uuid")  
  47.     public String getId() {  
  48.         return id;  
  49.     }  
  50.     public void setId(String id) {  
  51.         this.id = id;  
  52.     }  
  53.     public String getSex() {  
  54.         return sex;  
  55.     }  
  56.     public void setSex(String sex) {  
  57.         this.sex = sex;  
  58.     }  
  59.       
  60.     @Override  
  61.     public String toString() {        
  62.         return "name: " + username + ",password: " + password+",sex: " + sex + ",age: " + age+",address: " + address + ",id: " + id;  
  63.     }  
  64.   
  65. }  


DAO层: 

UserDAO Code: 

Java代码   收藏代码
  1. import java.util.List;  
  2.   
  3. import com.liuzd.s2sh.entity.User;  
  4.   
  5. public interface UserDAO {  
  6.       
  7.     /** 
  8.      * 检查用户是否存在 
  9.      * */  
  10.     public User getUserByUserIdAndUserNameExits(User user);  
  11.     public void saveUser(User user);  
  12.     public void updateUser(User user);  
  13.     public User getUser(User user);  
  14.     public void delUser(User user);   
  15.     public List<User> finUserAll();     
  16.   
  17. }  

UserDAOImpl Code: 

Java代码   收藏代码
  1. import java.util.List;  
  2.   
  3. import javax.annotation.Resource;  
  4.   
  5. import org.springframework.orm.hibernate3.HibernateTemplate;  
  6. import org.springframework.stereotype.Component;  
  7.   
  8. import com.liuzd.s2sh.dao.UserDAO;  
  9. import com.liuzd.s2sh.entity.User;  
  10.   
  11. @Component("userDao")  
  12. public class UserDAOImpl implements UserDAO {  
  13.       
  14.     private HibernateTemplate hibernateTemplate;   
  15.   
  16.     public HibernateTemplate getHibernateTemplate() {  
  17.         return hibernateTemplate;  
  18.     }  
  19.   
  20.     @Resource  
  21.     public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {  
  22.         this.hibernateTemplate = hibernateTemplate;  
  23.     }  
  24.   
  25.     public User getUserByUserIdAndUserNameExits(User user) {          
  26.         List<User> users = hibernateTemplate.find("from User u where u.username = '" + user.getUsername() + "' and u.password='"+user.getPassword()+"'");  
  27.           
  28.         if (users != null && users.size() > 0) {  
  29.             return users.get(0);  
  30.         }  
  31.         return null;  
  32.     }  
  33.   
  34.     @Override  
  35.     public void saveUser(User user) {  
  36.         this.hibernateTemplate.save(user);        
  37.     }  
  38.   
  39.     @Override  
  40.     public void delUser(User user) {  
  41.         User delUser = getUser(user);  
  42.         this.hibernateTemplate.delete(delUser);  
  43.     }  
  44.       
  45.   
  46.     @Override  
  47.     public List<User> finUserAll() {    
  48.         return this.hibernateTemplate.find("from User");  
  49.     }  
  50.   
  51.     @Override  
  52.     public User getUser(User user) {          
  53.         return this.hibernateTemplate.load(User.class,user.getId());  
  54.     }  
  55.   
  56.     @Override  
  57.     public void updateUser(User user) {  
  58.         this.hibernateTemplate.update(user);          
  59.     }  
  60. }  


3 JSp代码如下: 
Login.jsp 

Jsp代码   收藏代码
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <html>  
  4. <head>  
  5.     <title>Sign On</title>  
  6. </head>  
  7. <body>  
  8. <s:form action="userAction">  
  9.     <s:textfield key="user.username"/>  
  10.     <s:password key="user.password" />  
  11.     <s:submit/>  
  12. </s:form>  
  13. </body>  
  14. </html>  


Success.jsp,fail.jsp 

Jsp代码   收藏代码
  1. <%@ page contentType="text/html; charset=UTF-8" %>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <html>  
  4. <head>     
  5. </head>  
  6. <body>  
  7. <s:property value="message"/><br>  
  8. <a href="${pageContext.request.contextPath}">返回</a>  
  9. <s:debug></s:debug>  
  10. </body>  
  11. </html>  


User.jsp 

Jsp代码   收藏代码
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <html>  
  4. <head>  
  5.     <title>用户信息</title>  
  6. </head>  
  7. <body>  
  8. <s:form action="userAction!editUser.action">  
  9. <input type="hidden" name="action" value='<s:property value="action"/>'/>  
  10. <s:property value="message"/><br>  
  11. <s:if test="user.id != null">  
  12.   <s:property value="user.id"/>,<s:property value="user.username"/>,  
  13. <s:property value="user.age"/>,<s:property value="user.sex"/>,  
  14. <s:property value="user.address"/>,<s:property value="user.password"/>,  
  15. <s:property value="#request.myname"/>,<s:property value="#session.mysex"/>  
  16. </s:if>  
  17.   
  18. <br>  
  19.   <table>  
  20.       <tr>         
  21.         <td>  
  22.           <s:hidden name="user.id"/>      
  23.           <s:textfield label="姓名" name="user.username"/>            
  24.          </td>  
  25.       </tr>  
  26.       <tr>         
  27.         <td>  
  28.           <s:textfield  label="年龄" name="user.age"/>  
  29.         </td>  
  30.       </tr>  
  31.       <tr>          
  32.         <td>  
  33.           <s:select label="性别" name="user.sex"     
  34.         list="#{ 1:'男', 2: '女', 3: '未知'}"  
  35.         listKey="key"  
  36.         listValue="value"  
  37.         ></s:select>  
  38.         </td>  
  39.       </tr>  
  40.       <tr>          
  41.         <td>  
  42.           <s:textfield label="密码" name="user.password" size="50"/>  
  43.         </td>   
  44.       </tr>  
  45.       <tr>         
  46.         <td>  
  47.           <s:textfield label="地址" name="user.address"/>  
  48.         </td>  
  49.       </tr>  
  50.       <tr>  
  51.         <td align="right">  
  52.          <s:submit vlaue="保存"/>  
  53.         </td>  
  54.       </tr>  
  55.     </table>  
  56. </s:form>  
  57. <br>  
  58. <s:debug></s:debug>  
  59. <br>  
  60. <a href="${pageContext.request.contextPath}">返回主页</a><br>  
  61. <s:a href="userAction!userList.action">返回显示</s:a>  
  62. </body>  
  63. </html>  


UserList.jsp 

Jsp代码   收藏代码
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>  
  2.  <%@ taglib prefix="s" uri="/struts-tags" %>  
  3. <%@ taglib uri="/WEB-INF/c.tld" prefix="c"%>  
  4. <html>  
  5. <head>  
  6.     <title>用户集合</title>  
  7. </head>  
  8.   
  9. <body>  
  10. <table width="50%" border="1" cellpadding="1" align="center">  
  11.   <thead>  
  12.     <tr>  
  13.       <th>姓名</th>  
  14.       <th>年龄</th>  
  15.       <th>性别</th>  
  16.       <th>地址</th>    
  17.       <th>操作</th>      
  18.     </tr>  
  19.   </thead>  
  20.   <tbody>  
  21.   <!--   
  22.   <s:iterator value="#request.userList" status="status" >  
  23.     <tr align="center">         
  24.       <td><s:property value="username"/></td>  
  25.       <td><s:property value="age"/></td>  
  26.       <td><s:property value="sex"/></td>  
  27.       <td><s:property value="address"/></td>       
  28.       <td>  
  29.         <s:a href="userAction!addUser.action">添加</s:a> | <s:a href="userAction!loadUser.action?user.id=%{id}">编辑</s:a> |      
  30.         <a href="<s:url action="userAction!delUser.action"><s:param name="user.id" value="id"/></s:url>">删除</a>         
  31.       </td>  
  32.     </tr>  
  33.  </s:iterator>    
  34.   -->  
  35.     
  36.  <c:forEach  items="${requestScope.userList}" var="user">  
  37.     <tr align="center">       
  38.       <td>${user.username}</td>  
  39.       <td>${user.age}</td>  
  40.       <td>${user.sex eq 1 ? "男" : user.sex eq 2 ? "女" : "未知"}</td>  
  41.       <td>${user.address}</td>  
  42.       <td>  
  43.         <a href="${pageContext.request.contextPath}/userAction!addUser.action">添加</a> |   
  44.         <a href="${pageContext.request.contextPath}/userAction!loadUser.action?user.id=${user.id}">编辑</a> |   
  45.         <a href="${pageContext.request.contextPath}/userAction!delUser.action?user.id=${user.id}">删除</a>  
  46.       </td>  
  47.     </tr>  
  48.  </c:forEach>  
  49.     
  50.  </tbody>  
  51. </table>  
  52. <br>  
  53. <a href="${pageContext.request.contextPath}">返回</a>  
  54. <br>  
  55. </body>  
  56. </html>  


4 Oracle.sql 

Sql代码   收藏代码
  1. create table USERS  
  2. (  
  3.   id       VARCHAR2(50) not null,  
  4.   username VARCHAR2(50),  
  5.   age      NUMBER,  
  6.   sex      VARCHAR2(1),  
  7.   address  VARCHAR2(200),  
  8.   password VARCHAR2(20)  
  9. );  
  10. alter table USERS add constraint PKUID primary key (ID);  
  11.   
  12. insert into USERS (ID, USERNAME, AGE, SEX, ADDRESS, PASSWORD, ROWID)  
  13. values ('001''spring', 25, '1''成都市''spring''');  
  14. commit;  


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值