ssh简单入门级案例教程

准备工作:struts2.3.34+spring4.2.2+hibernate3.3.2

导入需要的开发包:

struts开发包---注意:javassist-3.18.1-GA.jar包与hibernate中的重复(只保留高版本即可)

hibernate开发包

此外还需要在hibernate解压包中找到lib/optional/c3p0文件夹,然后将c3p0-0.9.2.1.jar和mchange-commons-java-0.2.3.4.jar拷贝到工程lib目录下

spring开发包

除了javadoc.jar和sources.jar包名结尾的包,其他包全部拷贝到工程项目lib中

最后别忘了将mysql驱动包拷贝到lib中

2、web.xml

Spring提供了ContextLoaderListener,该监听器实现了ServletContextListener接口,他在Web应用程序启动时被触发。当他创建时会自动查找WEB-INF/下的applicationContext.xml,所以当只有一个配置文件且文件名为applicationContext.xml时,则只需要在web.xml文件中配置ContextLoaderListener监听器即可.当有多个配置文件需要载入,则应该使用<context-param>元素指定配置文件的文件名,ContextLoaderListener加载时,会查找名为contextConfigLocation的初始化参数。当Web应用程序启动时先读取web.xml文件,然后创建spring容器,之后根据配置文件内容,装配Bean实例。

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
 3   <display-name>sklm_2</display-name>
 4   <welcome-file-list>
 5    <!-- 
 6      <welcome-file>index.html</welcome-file>
 7     <welcome-file>index.htm</welcome-file>
 8     <welcome-file>index.jsp</welcome-file>
 9     <welcome-file>default.html</welcome-file>
10     <welcome-file>default.htm</welcome-file>
11     --> 
12     <welcome-file>home.jsp</welcome-file>
13   </welcome-file-list>
14   
15   <!-- 让spring随web启动而创建的监听器 -->
16   <listener>
17       <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
18   </listener>
19   <!-- 配置spring配置文件位置参数 -->
20   <context-param>
21       <param-name>contextConfigLocation</param-name>
22       <param-value>classpath:applicationContext.xml</param-value>
23   </context-param>
24   
25   <!-- struts2核心配置 -->
26   <filter>
27       <filter-name>struts2</filter-name>
28       <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
29   </filter>
30   <filter-mapping>
31       <filter-name>struts2</filter-name>
32       <url-pattern>/*</url-pattern>
33   </filter-mapping>
34   
35 </web-app>
web.xml

3、实体和映射文件

(1)User.java

 1 package cn.xyp.web.entity;
 2 
 3 import java.sql.Date;
 4 
 5 public class User {
 6 
 7     private Long user_id;
 8     private String user_name;
 9     private String user_password;
10     private int user_age;
11     private String user_sex;
12     private String user_address;
13     private Date user_create_time;
14     public User(){}
15     
16     public User(String user_name, String user_password, int user_age, String user_sex, String user_address,
17             Date user_create_time) {
18         this.user_name = user_name;
19         this.user_password = user_password;
20         this.user_age = user_age;
21         this.user_sex = user_sex;
22         this.user_address = user_address;
23         this.user_create_time = user_create_time;
24     }
25 
26     public Long getUser_id() {
27         return user_id;
28     }
29     public void setUser_id(Long user_id) {
30         this.user_id = user_id;
31     }
32     public String getUser_name() {
33         return user_name;
34     }
35     public void setUser_name(String user_name) {
36         this.user_name = user_name;
37     }
38     public String getUser_password() {
39         return user_password;
40     }
41     public void setUser_password(String user_password) {
42         this.user_password = user_password;
43     }
44     public int getUser_age() {
45         return user_age;
46     }
47     public void setUser_age(int user_age) {
48         this.user_age = user_age;
49     }
50     public String getUser_sex() {
51         return user_sex;
52     }
53     public void setUser_sex(String user_sex) {
54         this.user_sex = user_sex;
55     }
56     public String getUser_address() {
57         return user_address;
58     }
59     public void setUser_address(String user_address) {
60         this.user_address = user_address;
61     }
62     public Date getUser_create_time() {
63         return user_create_time;
64     }
65     public void setUser_create_time(Date user_create_time) {
66         this.user_create_time = user_create_time;
67     }
68     
69     @Override
70     public String toString(){
71         return "User [user_id="+user_id+", user_name="+user_name+", user_password="+user_password+", user_age="+user_age+", "
72                 + "user_sex="+user_sex+", user_address="+user_address+", user_create_time="+user_create_time+"]";
73     }
74     
75 }
user.java

(2)、User.hbm.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE hibernate-mapping PUBLIC 
 3     "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
 4     "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
 5     
 6 <hibernate-mapping package="cn.xyp.web.entity">
 7     <class name="User" table="sys_user">
 8         <id name="user_id" type="long">
 9             <generator class="native"></generator>
10         </id>
11         
12         <property name="user_name" type="java.lang.String"></property>
13         <property name="user_password" type="java.lang.String"></property>
14         <property name="user_age" type="int"></property>
15         <property name="user_sex" type="java.lang.String"></property>
16         <property name="user_address" type="java.lang.String"></property>
17         <property name="user_create_time" type="java.sql.Date"></property>
18     </class>
19 </hibernate-mapping>
User.hbm.xml

4、DAO

(1)UserDAO.java接口类

 1 package cn.xyp.web.dao;
 2 
 3 import java.util.List;
 4 
 5 import cn.xyp.web.entity.User;
 6 
 7 public interface UserDAO {
 8 
 9     /**
10      * 向数据库中添加用户
11      * @param user
12      */
13     public void add(User user);
14     
15     /**
16      * 刷新user在数据库中的信息
17      * @param user
18      */
19     public void update(User user);
20     
21     /**
22      * 根据被给定的id号删除对应的user
23      * @param id
24      */
25     public void delete(long id);
26     
27     /**
28      * 根据被给定的name和password查找user
29      * @param name
30      * @param password
31      * @return
32      */
33     public User findByName(String name, String password);
34     
35     /**
36      * 根据被给定的id号查找user
37      * @param id
38      * @return
39      */
40     public User findById(long id);
41     
42     /**
43      * 从数据库中查找所有信息
44      * @return
45      */
46     public List<User> findAll();
47 }
UserDAO

(2)UserDAOImpl.java 接口实现类

  1 package cn.xyp.web.dao;
  2 
  3 import java.util.List;
  4 
  5 import org.hibernate.HibernateException;
  6 import org.hibernate.Query;
  7 import org.hibernate.Session;
  8 import org.hibernate.SessionFactory;
  9 import org.hibernate.Transaction;
 10 
 11 import cn.xyp.web.entity.User;
 12 
 13 public class UserDAOImpl implements UserDAO {
 14 
 15     private SessionFactory sessionFactory;
 16     
 17     //构造方法注入SessionFactory对象
 18     public UserDAOImpl(SessionFactory sessionFactory){
 19         this.sessionFactory = sessionFactory;
 20     }
 21     
 22     //使用SessionFactory对象返回Session对象
 23     public Session currentSession(){
 24         return sessionFactory.openSession();
 25     }
 26     
 27     @Override
 28     public void add(User user) {
 29         Session session = null;
 30         try {
 31             session = currentSession();
 32             Transaction tx = session.beginTransaction();
 33             session.save(user);
 34             tx.commit();
 35         } catch (HibernateException e) {
 36             e.printStackTrace();
 37         }finally{
 38             session.close();
 39         }
 40 
 41     }
 42 
 43     @Override
 44     public void update(User user) {
 45         Session session = null;
 46         try {
 47             session = currentSession();
 48             Transaction tx = session.beginTransaction();
 49             session.save(user);
 50             tx.commit();
 51         } catch (HibernateException e) {
 52             e.printStackTrace();
 53         }finally{
 54             session.close();
 55         }
 56 
 57     }
 58 
 59     @Override
 60     public void delete(long id) {
 61         Session session = null;
 62         try {
 63             session = currentSession();
 64             Transaction tx = session.beginTransaction();
 65             User user = (User)session.get(User.class, id);
 66             session.delete(user);
 67             tx.commit();
 68         } catch (HibernateException e) {
 69             e.printStackTrace();
 70         }finally{
 71             session.close();
 72         }
 73 
 74     }
 75 
 76     @Override
 77     public User findByName(String name, String password) {
 78         Session session = null;
 79         User user = null;
 80         try {
 81             session = currentSession();
 82             Transaction tx = session.beginTransaction();
 83             String hsql = "from User m where m.user_name = :uname and m.user_password= :upassword";
 84             Query query = session.createQuery(hsql);
 85             query.setParameter("uname", name);
 86             query.setParameter("upassword", password);
 87             user = (User) query.uniqueResult();
 88             tx.commit();    
 89         }catch(HibernateException e){
 90             e.printStackTrace();
 91         }finally{
 92             session.close();
 93         }
 94             
 95         return user;
 96     }
 97 
 98     @Override
 99     public User findById(long id) {
100         Session session = null;
101         User user = null;
102         try {
103             session = currentSession();
104             Transaction tx = session.beginTransaction();
105             String hsql = "from User u where u.user_id= :id";
106             Query query = session.createQuery(hsql);
107             user = (User) query.setParameter("id", id);
108             tx.commit();
109         } catch (HibernateException e) {
110             e.printStackTrace();
111         }finally{
112             session.close();
113         }
114         return user;
115     }
116 
117     @Override
118     public List<User> findAll() {
119         Session session = null;
120         List<User> list = null;
121         try {
122             session = currentSession();
123             Transaction tx = session.beginTransaction();
124             String hsql = "from User";
125             Query query = session.createQuery(hsql);
126             list = query.list();
127             tx.commit();
128         } catch (HibernateException e) {
129             e.printStackTrace();
130         }finally{
131             session.close();
132         }
133         return list;
134     }
135 
136 }
UserDAOImpl

5、业务逻辑层

(1)UserService.java接口类

 1 package cn.xyp.web.service;
 2 
 3 import java.util.List;
 4 
 5 import cn.xyp.web.entity.User;
 6 
 7 public interface UserService {
 8 
 9     public void add(User user);
10     public void update(User user);
11     public void delete(long id);
12     public User findByName(String name, String password);
13     public User findById(long id);
14     public List<User> findAll();
15     
16 }
UserService.java

(2)UserServiceImpl.java接口实现类

 1 package cn.xyp.web.service;
 2 /**
 3  * 设值注入DAO层组件
 4  */
 5 import java.util.List;
 6 
 7 import cn.xyp.web.dao.UserDAO;
 8 import cn.xyp.web.entity.User;
 9 
10 public class UserServiceImpl implements UserService {
11 
12     private UserDAO userDao;
13     
14     public void setUserDao(UserDAO userDao){
15         this.userDao = userDao;
16     }
17     
18     @Override
19     public void add(User user) {
20         
21         if(userDao.findById(user.getUser_id())==null){
22             userDao.add(user);
23         }
24     }
25 
26     @Override
27     public void update(User user) {
28         if(userDao.findById(user.getUser_id())==null){
29             userDao.update(user);
30         }
31 
32     }
33 
34     @Override
35     public void delete(long id) {
36         if(userDao.findById(id)==null){
37             userDao.delete(id);
38         }
39 
40     }
41 
42     @Override
43     public User findByName(String name, String password) {
44         User user = userDao.findByName(name, password);
45         return user;
46     }
47 
48     @Override
49     public User findById(long id) {
50         User user = userDao.findById(id);
51         return user;
52     }
53 
54     @Override
55     public List<User> findAll() {
56         List<User> list = userDao.findAll();
57         return list;
58     }
59 
60 }
UserServiceImpl.java

6、Action

(1)UserRegisterAction.java类(用户注册类)

 1 package cn.xyp.web.action;
 2 /**
 3  *设置注入业务逻辑组件
 4  */
 5 import com.opensymphony.xwork2.ActionSupport;
 6 
 7 import cn.xyp.web.entity.User;
 8 import cn.xyp.web.service.UserService;
 9 
10 public class UserRegisterAction extends ActionSupport {
11 
12     /**
13      * 
14      */
15     private static final long serialVersionUID = -4501870315633237256L;
16     private User user;
17     private UserService userService;
18     public User getUser(){
19         return user;
20     }
21     public void setUser(User user){
22         this.user = user;
23     }
24     
25     //注入业务逻辑组件
26     public void setUserService(UserService userService){
27         this.userService = userService;
28     }
29     
30     public String execute(){
31         userService.add(user);
32         return SUCCESS;
33     }
34 }
UserRegisterAction.java

(2)UserLoginAction.java类(用户登录类)

 1 package cn.xyp.web.action;
 2 /**
 3  * 设置用户登录注入
 4  */
 5 import com.opensymphony.xwork2.ActionSupport;
 6 
 7 import cn.xyp.web.entity.User;
 8 import cn.xyp.web.service.UserService;
 9 
10 public class UserLoginAction extends ActionSupport {
11 
12     /**
13      * 
14      */
15     private static final long serialVersionUID = 7448295814371243220L;
16     
17     private User user;
18     private UserService userService;
19     public User getUser() {
20         return user;
21     }
22     public void setUser(User user) {
23         this.user = user;
24     }
25     //注入业务逻辑组件
26     public void setUserService(UserService userService) {
27         this.userService = userService;
28     }
29     
30     public String execute(){
31         String b = null;
32         try {
33             User user_ = userService.findByName(user.getUser_name(), user.getUser_password());
34             if(user_ != null){
35                 b =  SUCCESS;
36             }    
37         } catch (Exception e) {
38             b =  ERROR;
39         }
40         return b;
41     }
42 
43 }
UserLoginAction.java

(3)UserDeleteAction.java类(删除用户类)

 1 package cn.xyp.web.action;
 2 
 3 import com.opensymphony.xwork2.ActionSupport;
 4 
 5 import cn.xyp.web.service.UserService;
 6 
 7 public class UserDeleteAction extends ActionSupport {
 8 
 9     /**
10      * 删除用户
11      */
12     private static final long serialVersionUID = -2132782345900294714L;
13     private UserService userService;
14     private long id;
15     
16     public void setUserService(UserService userService) {
17         this.userService = userService;
18     }
19     public long getId() {
20         return id;
21     }
22     public void setId(long id) {
23         this.id = id;
24     }
25     
26     public String execute(){
27         userService.delete(getId());
28         return SUCCESS;
29     }
30     
31 }
UserDeleteAction.java

(4)UserQueryAction.java(查询所有用户)

 1 package cn.xyp.web.action;
 2 /**
 3  * 查找数据库中的所有信息
 4  */
 5 import java.util.List;
 6 import javax.servlet.http.HttpServletRequest;
 7 import org.apache.struts2.ServletActionContext;
 8 import com.opensymphony.xwork2.ActionSupport;
 9 import cn.xyp.web.entity.User;
10 import cn.xyp.web.service.UserService;
11 
12 public class UserQueryAction extends ActionSupport {
13 
14     /**
15      * 
16      */
17     private static final long serialVersionUID = 1483788569708897545L;
18     private UserService userService;
19 
20     public void setUserService(UserService userService) {
21         this.userService = userService;
22     }
23     
24     public String execute(){
25         List<User> list = userService.findAll();
26         HttpServletRequest request = ServletActionContext.getRequest();
27         request.setAttribute("userList", list);
28         return SUCCESS;
29     }
30 
31 }
UserQueryAction.java

(5)UserUpdateAction.java(更新用户)

 1 package cn.xyp.web.action;
 2 
 3 import com.opensymphony.xwork2.ActionSupport;
 4 
 5 import cn.xyp.web.entity.User;
 6 import cn.xyp.web.service.UserService;
 7 
 8 public class UserUpdateAction extends ActionSupport {
 9 
10     /**
11      * 更新用户信息
12      */
13     private static final long serialVersionUID = 6174197960048716176L;
14     
15     private UserService userService;
16     private User user;
17     private long id;
18     public UserService getUserService() {
19         return userService;
20     }
21     public void setUserService(UserService userService) {
22         this.userService = userService;
23     }
24     public User getUser() {
25         return user;
26     }
27     public void setUser(User user) {
28         this.user = user;
29     }
30     public long getId() {
31         return id;
32     }
33     public void setId(long id) {
34         this.id = id;
35     }
36     
37     public String showUser(){
38         User user = userService.findById(id);
39         setUser(user);
40         return SUCCESS;
41     }
42     
43     public String execute(){
44         userService.update(user);
45         return SUCCESS;
46     }
47 
48 }
UserUpdateAtion.java

7、struts.xml

spring托管将Struts2中的Action的实例化工作交由Spring容器统一管理,同时使Struts2中的Action实例能够访问Spring提供的业务逻辑资源,spring容器依赖注入的优势也可以体现,Struts2提供的spring插件struts2-spring-plugin-2.3.16.3.jar配合<constant name="struts.objectFactory" value="spring">使得Struts2的action由Spring来负责进行实例化.

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <!DOCTYPE struts PUBLIC
 3     "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
 4     "http://struts.apache.org/dtds/struts-2.5.dtd">
 5 <struts>
 6     
 7     <!-- spring配置 -->
 8     <!-- 告诉struts运行时使用spring来创建对象 -->
 9     <constant name="struts.objectFactory" value="spring"/>
10 
11     <package name="crm" extends="struts-default">
12        <!-- class属性值是spring定义的Bean,当执行execute()返回success时,控制转到另一个动作userQuery -->
13        <action name="userRegister" class="userRegisterAction">
14            <result name="success" type="redirectAction">/userQuery</result>
15        </action>
16        
17        <action name="userLogin" class="userLoginAction">
18            <result name="success">/welcome.jsp</result>
19            <result name="error">/register.jsp</result>
20        </action>
21        
22         <action name="userQuery" class="userQueryAction">
23            <result name="success">/displayAll.jsp</result>
24        </action>
25        
26        <action name="userDelete" class="userDeleteAction">
27            <result name="success" type="redirectAction">/userQuery</result>
28        </action>
29        
30        <action name="userShow" class="userShowAction" method="showUser">
31            <result name="success">/update.jsp</result>
32        </action>
33        
34        <action name="userUpdate" class="userUpdateAction">
35            <result name="success" type="redirectAction">/userQuery</result>
36        </action>
37        
38     </package>
39 </struts>
struts.xml

8、applicationContext.xml

spring 框架提供了多种数据源类,可以使用spring提供的DriverManagerDataSource类还可以使用第三方数据源,如C3P0的ComboPooledDataSource数据源类,注意相应的两个jar包c3p0-0.9.2.1.jar mchange-commons-java-0.2.3.4.jar.

  Hibernate4已经完全实现自己的事物管理,所以spring4不提供HibernateDaoSupport和HibernateTemplete的支持。可以在应用程序的spring上下文中,像配置其他bean那样来配置HibernateSession工厂。如果要使用XML文件定义对象与数据库之间的映射,则需要在spring中配置LocalSessionFactoryBean。hibernateProperties属性配置了Hibernate如何进行操作的细节。"hibernate.current_session_context_class"是为当前Session提供一个策略,Session由org.springframework.orm.hibernate4.SpringSessionContext.currentSession得到。将sessionFactory注入到其他Bean中,如注入到DAO组件中,使其获得SessionFactory的引用后,就可以实现对数据库的访问。

 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:p="http://www.springframework.org/schema/p"  
 5         xmlns:aop="http://www.springframework.org/schema/aop"   
 6         xmlns:context="http://www.springframework.org/schema/context"  
 7         xmlns:jee="http://www.springframework.org/schema/jee"  
 8         xmlns:tx="http://www.springframework.org/schema/tx"  
 9         xsi:schemaLocation="    
10             http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd  
11             http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.2.xsd  
12             http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd
13             http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.2.xsd  
14             http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd">
15 
16 
17     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
18         <property name="driverClass" value="com.mysql.jdbc.Driver"></property>
19         <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/sklm?useUnicode=true&amp;characterEncoding=UTF-8"></property>
20         <property name="user" value="root"></property>
21         <property name="password" value="123456"></property>
22         <property name="maxPoolSize" value="40"></property>
23         <property name="minPoolSize" value="1"></property>
24         <property name="initialPoolSize" value="2"></property>
25         <property name="maxIdleTime" value="20"></property>
26         
27     </bean>
28     
29     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
30         <property name="dataSource" ref="dataSource"></property>
31         <property name="mappingResources">
32             <list>
33                 <value>cn/xyp/web/entity/User.hbm.xml</value>
34             </list>
35         </property>
36         <property name="hibernateProperties">
37             <props>
38                 <prop key="hibernate.show_sql">true</prop>
39                 <prop key="hibernate.hbm2ddl.auto">true</prop>
40                 <prop key="hibernate.temp.use_jdbc_metadata_defaults">false</prop>
41                 <prop key="hibernate.current_session_context_class">org.springframework.orm.hibernate3.SpringSessionContext</prop>
42                 <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
43             </props>
44         </property>
45     </bean>
46     
47     
48     
49     <bean id="userDao" class="cn.xyp.web.dao.UserDAOImpl">
50         <!-- 构造方法注入会话工厂组件sessionFactory -->
51         <constructor-arg>
52             <ref bean="sessionFactory"/>
53         </constructor-arg>
54     </bean>
55     
56     <bean id="userService" class="cn.xyp.web.service.UserServiceImpl">
57         <!-- 设置注入DAO组件 -->
58         <property name="userDao" ref="userDao"></property>
59     </bean>
60     
61     <bean id="userRegisterAction" class="cn.xyp.web.action.UserRegisterAction">
62         <!-- 设置业务逻辑组件 -->
63         <property name="userService" ref="userService"></property>
64     </bean>
65     
66     <bean id="userLoginAction" class="cn.xyp.web.action.UserLoginAction">
67         <property name="userService" ref="userService"></property>
68     </bean>
69     
70     <bean id="userQueryAction" class="cn.xyp.web.action.UserQueryAction">
71         <property name="userService" ref="userService"></property>
72     </bean>
73     
74     <bean id="userDeleteAction" class="cn.xyp.web.action.UserDeleteAction">
75         <property name="userService" ref="userService"></property>
76     </bean>
77     
78     <bean id="userUpdateAction" class="cn.xyp.web.action.UserUpdateAction">
79         <property name="userService" ref="userService"></property>
80     </bean>
81     
82     <bean id="homeAction" class="cn.xyp.web.action.HomeAction">
83         
84     </bean>
85     
86 </beans>
applicationContext.xml

9、jsp

(1)displayAll.jsp显示所有信息

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>显示会员信息</title>
 9 </head>
10 <body>
11 
12     <h4>会员信息</h4>
13     <table border="1">
14         <tr>
15             <td>会员id</td><td>会员名</td><td>密码</td><td>会员年龄</td><td>会员性别</td><td>会员联系方式</td><td>会员地址</td><td>注册会员日期</td><td>删除</td><td>修改</td>
16         </tr>
17             <s:iterator value="#request.userList" id="user">
18                 <tr>
19                     <td><s:property value="#user.user_id"/></td>
20                     <td><s:property value="#user.user_name"/></td>
21                     <td><s:property value="#user.user_password"/></td>
22                     <td><s:property value="#user.user_age"/></td>
23                     <td><s:property value="#user.user_sex"/></td>
24                     <td><s:property value="#user.user_phone"/></td>
25                     <td><s:property value="#user.user_address"/></td>
26                     <td><s:property value="#user.user_create_time"/></td>
27                     
28                     <td>
29                         <a href="<s:url action="userDelete"><s:param name="id"><s:property value="#user.user_id"/></s:param></s:url>">删除</a>
30                     </td>
31                     <td>
32                         <a href="<s:url action="userShow"><s:param name="id"><s:property value="#user.user_id"/></s:param></s:url>">修改</a>
33                     </td>
34                 
35                 </tr>
36             </s:iterator>
37     </table>
38     <a href="register.jsp">返回注册页面</a>
39 
40 </body>
41 </html>
displayAll.jsp

(2) login.jsp用户登录

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>会员登陆</title>
 9 </head>
10 <body>
11 
12     <s:form action="userLogin" method="post">
13         <s:textfield name="user.user_name" label="会员姓名:"></s:textfield>
14         <s:password name="user.user_password" label="会员口令:"></s:password>
15         <s:submit value="登  陆"></s:submit>
16     </s:form>
17 
18 </body>
19 </html>
login.jsp

(3)register.jsp用户注册

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>会员注册页面</title>
 9 </head>
10 <body>
11 
12     <s:form action="userRegister" method="post">
13         <h4><s:text name="欢迎注册会员"></s:text></h4>
14         <s:property value="exception.message"/>
15         <s:textfield name="user.user_name" label="会员姓名 " tooltip="Enter your name!" required="true"></s:textfield>
16         <s:password name="user.user_password" label="会员口令 " tooltip="Enter your password!" required="true"></s:password>
17         <s:textfield name="user.user_age" label="年  龄 " required="true"></s:textfield>
18         <%-- <s:select name="user.user_sex" label="性 别" list="{'男','女'}" headKey="00" headValue="" theme="simple" required="true"></s:select> --%>
19         <s:radio name="user.user_sex" label="性别" list="{'男','女'}" value="男"></s:radio>
20         <s:textfield name="user.user_address" label="会员住址 " required="true"></s:textfield>
21         <s:submit value="提  交"></s:submit>
22     </s:form>
23 
24 </body>
25 </html>
register.jsp

(4)update.jsp用户信息更改

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags" %>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>修改会员信息</title>
 9 </head>
10 <body>
11 
12     <s:form action="userUpdate" method="post">
13         <h4><s:text name="修改会员信息"></s:text></h4>
14         <s:actionerror/>
15         
16         <s:hidden name="user.user_id" value="%{user.user_id}"></s:hidden>
17          <s:textfield name="user.user_name" label="会员姓名:" tooltip="Enter your name!" required="true"></s:textfield>
18         <s:password name="user.user_password" label="会员口令:" tooltip="Enter your password!" required="true"></s:password>
19         <s:textfield name="user.user_age" label="年  龄:" required="true"></s:textfield>
20         <s:select name="user.user_sex" label="性  别:" list="{'男','女'}" headKey="00" headValue="男" theme="simple" required="true"></s:select>
21         <s:textfield name="user.user_address" label="会员住址:" required="true"></s:textfield>
22         <s:submit value="提  交"></s:submit>
23     </s:form>
24 
25 </body>
26 </html>
update.jsp

(5)welcome.jsp欢迎页面

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <%@ taglib prefix="s" uri="/struts-tags"%>
 4 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 5 <html>
 6 <head>
 7 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 8 <title>欢迎来到时空联盟</title>
 9 <style type="text/css">
10 body{
11     background-image: url('WebContent/WEB-INF/img/shikong.png');
12     background-position: center top;
13     background-repeat: no-repeat;
14     
15 }
16 </style>
17 </head>
18 <body>
19     <h1>Hello World!</h1>
20 </body>
21 </html>
welcome.jsp

本文参考自https://www.cnblogs.com/zhaozihan/p/5893785.html

原文地址:https://www.cnblogs.com/lihuibin/p/9480179.html