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



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.     <context-param>
  8.       <param-name>webAppRootKey</param-name>
  9.       <param-value>s2sh.root</param-value>
  10.      </context-param>
  11.     <context-param>
  12.         <param-name>
  13.             contextConfigLocation
  14.         </param-name>
  15.         <param-value>
  16.             classpath*:applicationContext.xml
  17.         </param-value>
  18.     </context-param>
  19.     <context-param>
  20.        <param-name>log4jConfigLocation</param-name>
  21.        <param-value>/WEB-INF/classes/log4j.properties</param-value>
  22.     </context-param>
  23.      <context-param>
  24.       <param-name>log4jRefreshInterval</param-name>
  25.       <param-value>60000</param-value>
  26.      </context-param>
  27.      <context-param>
  28.         <param-name>log4jExposeWebAppRoot</param-name>
  29.         <param-value>false</param-value>
  30.     </context-param>
  31.     <listener>
  32.         <listener-class>
  33.             org.springframework.web.context.ContextLoaderListener
  34.         </listener-class>
  35.     </listener>
  36.     <listener>
  37.        <listener-class>
  38.             org.springframework.web.util.Log4jConfigListener
  39.        </listener-class>
  40.     </listener>
  41.     <filter>
  42.         <filter-name>
  43.             encodingFilter
  44.         </filter-name>
  45.         <filter-class>
  46.             org.springframework.web.filter.CharacterEncodingFilter
  47.         </filter-class>
  48.         <init-param>
  49.             <param-name>
  50.                 encoding
  51.             </param-name>
  52.             <param-value>
  53.                 UTF-8
  54.             </param-value>
  55.         </init-param>
  56.     </filter>
  57.     <filter-mapping>
  58.         <filter-name>
  59.             encodingFilter
  60.         </filter-name>
  61.         <url-pattern>
  62.             /*
  63.         </url-pattern>
  64.     </filter-mapping>
  65.     <filter>
  66.         <filter-name>
  67.             openSessionInView
  68.         </filter-name>
  69.         <filter-class>
  70.             org.springframework.orm.hibernate3.support.OpenSessionInViewFilter
  71.         </filter-class>
  72.     </filter>
  73.     <filter-mapping>
  74.         <filter-name>
  75.             openSessionInView
  76.         </filter-name>
  77.         <url-pattern>
  78.             /*
  79.         </url-pattern>
  80.     </filter-mapping>
  81.     <filter>
  82.         <filter-name>
  83.             struts2
  84.         </filter-name>
  85.         <filter-class>
  86.             org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
  87.         </filter-class>
  88.     </filter>
  89.     <filter-mapping>
  90.         <filter-name>
  91.             struts2
  92.         </filter-name>
  93.         <url-pattern>
  94.             /*
  95.         </url-pattern>
  96.     </filter-mapping>
  97.     <welcome-file-list>
  98.         <welcome-file>
  99.             index.jsp
  100.         </welcome-file>
  101.     </welcome-file-list>
  102. </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.     <context:annotation-config />
  16.     <context:component-scan base-package=”com.liuzd.s2sh” />
  17.     <bean
  18.         class=”org.springframework.beans.factory.config.PropertyPlaceholderConfigurer”>
  19.         <property name=”locations”>
  20.             <value>classpath:jdbc.properties</value>
  21.         </property>
  22.     </bean>
  23.     <bean id=”dataSource” destroy-method=”close” class=”org.apache.commons.dbcp.BasicDataSource”>
  24.         <property name=”driverClassName”
  25.             value=”${jdbc.driverClassName}” />
  26.         <property name=”url” value=”${jdbc.url}” />
  27.         <property name=”username” value=”${jdbc.username}” />
  28.         <property name=”password” value=”${jdbc.password}” />
  29.     </bean>
  30.     <bean id=”sessionFactory”
  31.         class=”org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean”>
  32.         <property name=”dataSource” ref=”dataSource” />
  33.          <property name=”packagesToScan”>
  34.             <list>
  35.                 <value>com.liuzd.s2sh.entity</value>
  36.             </list>
  37.         </property>
  38.         <property name=”hibernateProperties”>
  39.             <props>
  40.                 <prop key=”hibernate.dialect”>
  41.                     org.hibernate.dialect.Oracle10gDialect
  42.                 </prop>
  43.                 <prop key=”hibernate.show_sql”>true</prop>
  44.                 <prop key=”format_sql”>true</prop>
  45.             </props>
  46.         </property>
  47.     </bean>
  48.     <!– 让spring管理sessionFactory的加一种方法 ,就是不删除hibernate.cfg.xml文件;
  49.      <bean id=”sessionFactory” class=”org.springframework.orm.hibernate3.LocalSessionFactoryBean”>
  50.       <property name=”configLocation”>
  51.        <value>classpath:hibernate.cfg.xml</value>
  52.       </property>
  53.      </bean>
  54.     –>
  55.     <bean id=”hibernateTemplate” class=”org.springframework.orm.hibernate3.HibernateTemplate”>
  56.         <property name=”sessionFactory” ref=”sessionFactory”></property>
  57.     </bean>
  58.     <bean id=”jdbcTemplate” class=”org.springframework.jdbc.core.JdbcTemplate”>
  59.        <property name=”dataSource” ref=”dataSource”></property>
  60. </bean>
  61.     <bean id=”txManager”
  62.         class=”org.springframework.orm.hibernate3.HibernateTransactionManager”>
  63.         <property name=”sessionFactory” ref=”sessionFactory” />
  64.     </bean>
  65.     <aop:config>
  66.         <aop:pointcut id=”bussinessService”
  67.             expression=”execution(public * com.liuzd.s2sh.service.*.*(..))” />
  68.         <aop:advisor pointcut-ref=”bussinessService”
  69.             advice-ref=”txAdvice” />
  70.     </aop:config>
  71.     <tx:advice id=”txAdvice” transaction-manager=”txManager”>
  72.         <tx:attributes>
  73.             <tx:method name=”*” />
  74.             <tx:method name=”add*” propagation=”REQUIRED”/>
  75.             <tx:method name=”del*” propagation=”REQUIRED”/>
  76.             <tx:method name=”edit*” propagation=”REQUIRED”/>
  77.         </tx:attributes>
  78.     </tx:advice>
  79. </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. import javax.servlet.http.HttpServletRequest;
  3. import org.apache.struts2.ServletActionContext;
  4. import org.apache.struts2.interceptor.SessionAware;
  5. import com.opensymphony.xwork2.ActionContext;
  6. import com.opensymphony.xwork2.ActionSupport;
  7. public class BaseAction extends ActionSupport implements SessionAware{
  8.     private static final long serialVersionUID = 1L;
  9.     public void setSession(Map<String, Object> sessionMap) {
  10.     }
  11.     protected Map<String,Object> getSession(){
  12.         return  (Map<String,Object>)ActionContext.getContext().getSession();
  13.     }
  14.     protected HttpServletRequest getRequest(){
  15.         return ServletActionContext.getRequest ();
  16.     }
  17. }

UserAction Code:

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

Service层:
UserService Code:

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

UserServiceImpl Code:

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


Entity层:
User Code:

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

DAO层:

UserDAO Code:

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

UserDAOImpl Code:

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

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. <br>
  18.   <table>
  19.       <tr>
  20.         <td>
  21.           <s:hidden name=”user.id”/>
  22.           <s:textfield label=”姓名” name=”user.username”/>
  23.          </td>
  24.       </tr>
  25.       <tr>
  26.         <td>
  27.           <s:textfield  label=”年龄” name=”user.age”/>
  28.         </td>
  29.       </tr>
  30.       <tr>
  31.         <td>
  32.           <s:select label=”性别” name=”user.sex”
  33.         list=”#{ 1:’男’, 2: ’女’, 3: ’未知’}”
  34.         listKey=”key”
  35.         listValue=”value”
  36.         ></s:select>
  37.         </td>
  38.       </tr>
  39.       <tr>
  40.         <td>
  41.           <s:textfield label=”密码” name=”user.password” size=”50″/>
  42.         </td>
  43.       </tr>
  44.       <tr>
  45.         <td>
  46.           <s:textfield label=”地址” name=”user.address”/>
  47.         </td>
  48.       </tr>
  49.       <tr>
  50.         <td align=”right”>
  51.          <s:submit vlaue=”保存”/>
  52.         </td>
  53.       </tr>
  54.     </table>
  55. </s:form>
  56. <br>
  57. <s:debug></s:debug>
  58. <br>
  59. <a href=”${pageContext.request.contextPath}”>返回主页</a><br>
  60. <s:a href=”userAction!userList.action”>返回显示</s:a>
  61. </body>
  62. </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. <body>
  9. <table width=”50%” border=”1″ cellpadding=”1″ align=”center”>
  10.   <thead>
  11.     <tr>
  12.       <th>姓名</th>
  13.       <th>年龄</th>
  14.       <th>性别</th>
  15.       <th>地址</th>
  16.       <th>操作</th>
  17.     </tr>
  18.   </thead>
  19.   <tbody>
  20.   <!–
  21.   <s:iterator value=”#request.userList” status=”status” >
  22.     <tr align=”center”>
  23.       <td><s:property value=”username”/></td>
  24.       <td><s:property value=”age”/></td>
  25.       <td><s:property value=”sex”/></td>
  26.       <td><s:property value=”address”/></td>
  27.       <td>
  28.         <s:a href=”userAction!addUser.action”>添加</s:a> | <s:a href=”userAction!loadUser.action?user.id=%{id}”>编辑</s:a> |
  29.         <a href=”<s:url action=”userAction!delUser.action”><s:param name=”user.id” value=”id”/></s:url>”>删除</a>
  30.       </td>
  31.     </tr>
  32.  </s:iterator>
  33.   –>
  34.  <c:forEach  items=”${requestScope.userList}” var=”user”>
  35.     <tr align=”center”>
  36.       <td>${user.username}</td>
  37.       <td>${user.age}</td>
  38.       <td>${user.sex eq 1 ? ”男” : user.sex eq 2 ? ”女” : ”未知”}</td>
  39.       <td>${user.address}</td>
  40.       <td>
  41.         <a href=”${pageContext.request.contextPath}/userAction!addUser.action”>添加</a> |
  42.         <a href=”${pageContext.request.contextPath}/userAction!loadUser.action?user.id=${user.id}”>编辑</a> |
  43.         <a href=”${pageContext.request.contextPath}/userAction!delUser.action?user.id=${user.id}”>删除</a>
  44.       </td>
  45.     </tr>
  46.  </c:forEach>
  47.  </tbody>
  48. </table>
  49. <br>
  50. <a href=”${pageContext.request.contextPath}”>返回</a>
  51. <br>
  52. </body>
  53. </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. insert into USERS (ID, USERNAME, AGE, SEX, ADDRESS, PASSWORD, ROWID)
  12. values (’001′, ’spring’, 25, ’1′, ’成都市’, ’spring’, ”);
  13. commit;

http://liuzidong.iteye.com/blog/935493