Struts + Spring + Hibernate基础框架搭建2

来源:互联网 发布:淘宝买家等级怎么升 编辑:程序博客网 时间:2024/05/16 00:39

上一篇已经搭建了一个最基本的ssh开发环境。也能基本运行了,但是没有写实际的代码,只是把环境给配置好了。这次我们来写一个简单的例子,这个例子是参考网上的一个工程,本人也是菜鸟,哈哈

 完整的工程目录如下:



首先我们创建好Userinfo.java  , BaseDao.java , UserManagerService.java还有UserManagerAct.java这三个文件。并放到相应的包里面去分别是org.ssh.pojo,org.ssh.dao,org.ssh.service,org.ssh.action。如上图所示;下面逐一分析这个几个类

1.Userinfo.java 这是一个pojo类,也就是实体类。先看看代码先

 

[java] view plaincopy
  1. package org.ssh.pojo;  
  2.   
  3. /** 
  4.  * 用户信息 
  5.  */  
  6. public class Userinfo implements java.io.Serializable {  
  7.   
  8.     private static final long serialVersionUID = 5866268712137826050L;  
  9.     /**用户id*/  
  10.     private Integer id;  
  11.     /**用户名*/  
  12.     private String uname;  
  13.     /**性别*/  
  14.     private String sex;  
  15.     /**密码*/  
  16.     private String password;  
  17.     /**电话号码*/  
  18.     private String telphone;  
  19.     /**住址*/  
  20.     private String address;  
  21.   
  22.     public Userinfo() {  
  23.     }  
  24.   
  25.     public Integer getId() {  
  26.         return this.id;  
  27.     }  
  28.   
  29.     public void setId(Integer id) {  
  30.         this.id = id;  
  31.     }  
  32.   
  33.     public String getUname() {  
  34.         return this.uname;  
  35.     }  
  36.   
  37.     public void setUname(String uname) {  
  38.         this.uname = uname;  
  39.     }  
  40.   
  41.     public String getSex() {  
  42.         return this.sex;  
  43.     }  
  44.   
  45.     public void setSex(String sex) {  
  46.         this.sex = sex;  
  47.     }  
  48.   
  49.     public String getPassword() {  
  50.         return this.password;  
  51.     }  
  52.   
  53.     public void setPassword(String password) {  
  54.         this.password = password;  
  55.     }  
  56.   
  57.     public String getTelphone() {  
  58.         return this.telphone;  
  59.     }  
  60.   
  61.     public void setTelphone(String telphone) {  
  62.         this.telphone = telphone;  
  63.     }  
  64.   
  65.     public String getAddress() {  
  66.         return this.address;  
  67.     }  
  68.   
  69.     public void setAddress(String address) {  
  70.         this.address = address;  
  71.     }  
  72.   
  73. }  
这个类主要是用来描述一个实体对象,跟数据库的用户表产生映射关系,所以我们还要在UserInfo.java的同级目录下创建一个hibernate的描述文件Userinfo.hbm.xml,内容如下:

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"  
  3. "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">  
  4. <!--  
  5.     Mapping file autogenerated by MyEclipse Persistence Tools 
  6. -->  
  7. <hibernate-mapping>  
  8.     <class name="org.ssh.pojo.Userinfo" table="userinfo" catalog="myssh">  
  9.         <id name="id" type="java.lang.Integer">  
  10.             <column name="id" />  
  11.             <generator class="assigned"></generator>  
  12.         </id>  
  13.         <property name="uname" type="java.lang.String">  
  14.             <column name="uname" length="30" not-null="true" unique="true"/>  
  15.         </property>  
  16.         <property name="sex" type="java.lang.String">  
  17.             <column name="sex" length="10" not-null="true" />  
  18.         </property>  
  19.         <property name="password" type="java.lang.String">  
  20.             <column name="password" length="20" not-null="true" />  
  21.         </property>  
  22.         <property name="telphone" type="java.lang.String">  
  23.             <column name="telphone" length="15" />  
  24.         </property>  
  25.         <property name="address" type="java.lang.String">  
  26.             <column name="address" length="50" />  
  27.         </property>  
  28.     </class>  
  29. </hibernate-mapping>  
这个内容应该不难理解,其实就是描述一下这个类关联数据库的那个表,那个属性关联哪一列,数据类型是什么...,这里不详细研究了,下次用注解就不用这个文件了。


2.BaseDao.java 这个类主要实现数据库的操作,这里只是一些简单的实现。上代码

[java] view plaincopy
  1. package org.ssh.dao;  
  2.   
  3. import java.io.Serializable;  
  4. import java.util.List;  
  5.   
  6. import org.springframework.orm.hibernate3.support.HibernateDaoSupport;  
  7.   
  8. /** 
  9.  * 数据库io操作 
  10.  */  
  11. public class BaseDao extends HibernateDaoSupport {  
  12.       
  13.     /**查询*/  
  14.     public <T> List<T> getObjects(String queryString){  
  15.         return (List<T>)this.getHibernateTemplate().find(queryString);  
  16.     }  
  17.       
  18.     /**查询所有*/  
  19.     public <T> List<T> getAllObjects(Class<T> clazz){  
  20.         return this.getHibernateTemplate().loadAll(clazz);  
  21.     }  
  22.       
  23.     /**添加一个*/  
  24.     public <T> void addObject(T clazz){  
  25.         this.getHibernateTemplate().save(clazz);  
  26.     }  
  27.       
  28.     /**更新指定的*/  
  29.     public <T> void updateObject(T clazz){  
  30.         this.getHibernateTemplate().update(clazz);  
  31.     }  
  32.   
  33.     /**删除指定的*/  
  34.     public <T> void deleteObject(T clazz){  
  35.         this.getHibernateTemplate().delete(clazz);  
  36.     }  
  37.       
  38.     /**通过id获取*/  
  39.     public <T> T getObject(Class<T> clazz,Serializable id){  
  40.         return this.getHibernateTemplate().get(clazz, id);  
  41.     }  
  42. }  

 

 

 

 

 

 3.UserManagerService.java 用户管理业务逻辑的实现,这个是业务逻辑层,业务逻辑在这里实现,这里操作数据库是调用上一层dao层代码。上代码 

[java] view plaincopy
  1. package org.ssh.service;  
  2.   
  3. import java.util.List;  
  4.   
  5. import org.ssh.dao.BaseDao;  
  6. /** 
  7.  * 用户管理业务逻辑的实现 
  8.  * */  
  9. public class UserManagerService<T> {  
  10.       
  11.     private BaseDao dao;  
  12.       
  13.     public T doLogin(String userName,String password) throws Exception{  
  14.         if(userName == null || password == nullreturn null;  
  15.         String queryString = "SELECT u FROM Userinfo u WHERE u.uname = '"+userName +"' AND u.password = "+password;  
  16.         List<T> users = dao.getObjects(queryString);  
  17.         return users.get(0);  
  18.     }  
  19.       
  20.     public List<T> queryUsers(String uname,Class<T> clazz){  
  21.         if(uname == null || "".equals(uname))  
  22.             return dao.getAllObjects(clazz);  
  23.         String queryString = "SELECT u FROM Userinfo u WHERE u.uname like '"+uname+"%'";  
  24.         return dao.getObjects(queryString);  
  25.     }  
  26.       
  27.     public void addUser(T user) throws Exception{  
  28.         dao.addObject(user);  
  29.     }  
  30.       
  31.     public void modifyUser(T user) throws Exception{  
  32.         dao.updateObject(user);  
  33.     }  
  34.       
  35.     public void deleteUser(int id,Class<T> clazz) throws Exception{  
  36.         T u = dao.getObject(clazz, id);  
  37.         dao.deleteObject(u);  
  38.     }  
  39.       
  40.     public T getUser(Class<T> clazz, int id){  
  41.         return dao.getObject(clazz, id);  
  42.     }  
  43.       
  44.     public BaseDao getDao() {  
  45.         return dao;  
  46.     }  
  47.   
  48.     public void setDao(BaseDao dao) {  
  49.         this.dao = dao;  
  50.     }  
  51. }  


 

4.UserManagerAct.java 这是一个action,充当视图控制器的角色,也就是mvc中的c。直接与外部打交道,可以供客户端调用,也可以和jsp等调用,这一层通过调用业务逻辑层来完成功能。不直接操作数据库,业务逻辑也不在这里实现。一些界面控制可以在这里实现,上代码

 

[java] view plaincopy
  1. package org.ssh.action;  
  2.   
  3.   
  4. import java.util.List;  
  5.   
  6. import org.apache.struts2.ServletActionContext;  
  7. import org.ssh.pojo.Userinfo;  
  8. import org.ssh.service.UserManagerService;  
  9.   
  10. import com.opensymphony.xwork2.ActionContext;  
  11. import com.opensymphony.xwork2.ActionSupport;  
  12.   
  13. /** 
  14.  * 用户管理控制器 
  15.  * */  
  16. public class UserManagerAct extends ActionSupport {  
  17.   
  18.     private static final long serialVersionUID = -281275682819237996L;  
  19.       
  20.     private Userinfo user = new Userinfo();   
  21.       
  22.     private UserManagerService<Userinfo> userService;  
  23.       
  24.     private List<Userinfo> users;  
  25.       
  26.     private String searchText;  
  27.       
  28.     public String doLogin(){  
  29.         if(this.user.getUname() == null || this.user.getPassword() == nullreturn INPUT;  
  30.         try {  
  31.             Userinfo user = userService.doLogin(this.user.getUname(), this.user.getPassword());  
  32.             if(user != null){  
  33.                 ActionContext.getContext().getSession().put("userinfo", user);  
  34.                 return doQuery();  
  35.             }else  
  36.                 return INPUT;  
  37.         } catch (Exception e) {  
  38.             return ERROR;  
  39.         }  
  40.     }  
  41.       
  42.     public String doQuery(){  
  43.         searchText = getParam("queryText");  
  44.         users = userService.queryUsers(searchText,Userinfo.class);  
  45.         return SUCCESS;  
  46.     }  
  47.   
  48.     public String doAdd(){  
  49.         String result = "";  
  50.         try {  
  51.             String param = getParam("param");  
  52.             if(Integer.parseInt(param) > 0){  
  53.                 user.setId(0);  
  54.                 userService.addUser(user);  
  55.                 result = doQuery();  
  56.             }else  
  57.                 result = "addUser";  
  58.         } catch (Exception e) {  
  59.             e.printStackTrace();  
  60.         }  
  61.         return result;  
  62.     }  
  63.       
  64.     public String doEdit(){  
  65.         try {  
  66.             Integer param = Integer.parseInt(getParam("param"));  
  67.             if(param == 0){  
  68.                 Integer id = Integer.parseInt(getParam("id"));  
  69.                 user = userService.getUser(Userinfo.class, id);  
  70.                 return "editUser";  
  71.             }else if(param == 1){  
  72.                 userService.modifyUser(user);  
  73.             }  
  74.         } catch (Exception e) {  
  75.             e.printStackTrace();  
  76.         }  
  77.         return doQuery();  
  78.     }  
  79.       
  80.     public String doDelete(){  
  81.         try {  
  82.             Integer param = Integer.parseInt(getParam("id"));  
  83.             userService.deleteUser(param,Userinfo.class);  
  84.         } catch (Exception e) {  
  85.             e.printStackTrace();  
  86.         }  
  87.         return doQuery();  
  88.     }  
  89.       
  90.     protected String getParam(String key){  
  91.         return ServletActionContext.getRequest().getParameter(key);  
  92.     }  
  93.       
  94.     public UserManagerService<Userinfo> getUserService() {  
  95.         return userService;  
  96.     }  
  97.   
  98.     public void setUserService(UserManagerService<Userinfo> userService) {  
  99.         this.userService = userService;  
  100.     }  
  101.   
  102.     public List<Userinfo> getUsers() {  
  103.         return users;  
  104.     }  
  105.   
  106.     public Userinfo getUser() {  
  107.         return user;  
  108.     }  
  109.   
  110.     public void setUser(Userinfo user) {  
  111.         this.user = user;  
  112.     }  
  113.   
  114.     public String getSearchText() {  
  115.         return searchText;  
  116.     }  
  117.   
  118.     public void setSearchText(String searchText) {  
  119.         this.searchText = searchText;  
  120.     }  
  121. }  


 

至此所有的java代码已经完成接下来我们还要配置一些内容,目的是让ssh使用上面的代码。

1.配置applicationContext.xml文件

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <beans  
  3.     xmlns="http://www.springframework.org/schema/beans"  
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  5.     xmlns:p="http://www.springframework.org/schema/p"  
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">  
  7.   
  8.     <!-- 数据库配置 -->  
  9.     <bean id="dataSource"  
  10.         class="org.apache.commons.dbcp.BasicDataSource">  
  11.         <property name="driverClassName"  
  12.             value="com.mysql.jdbc.Driver">  
  13.         </property>  
  14.         <property name="url"  
  15.             value="jdbc:mysql://localhost:3306/myssh">  
  16.         </property>  
  17.         <property name="username" value="anan"></property>  
  18.         <property name="password" value="xxxxxx"></property>  
  19.     </bean>  
  20.       
  21.     <!--  -->  
  22.     <bean id="sessionFactory"  
  23.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
  24.         <property name="dataSource">  
  25.             <ref bean="dataSource" />  
  26.         </property>  
  27.         <property name="hibernateProperties">  
  28.             <props>  
  29.                 <prop key="hibernate.dialect">  
  30.                     org.hibernate.dialect.MySQLDialect  
  31.                 </prop>  
  32.                 <prop key="hibernate.hbm2ddl.auto">update</prop>  
  33.             </props>  
  34.         </property>  
  35.         <!-- 配置实体描述文件 -->  
  36.         <property name="mappingResources">  
  37.             <list>  
  38.                 <value>org/ssh/pojo/Userinfo.hbm.xml</value>  
  39.             </list>  
  40.         </property>  
  41.     </bean>  
  42.       
  43.     <bean id="userAct" class="org.ssh.action.UserManagerAct" scope="prototype">  
  44.         <property name="userService" ref="userService"></property>  
  45.     </bean>  
  46.       
  47.     <bean id="userService" class="org.ssh.service.UserManagerService">  
  48.         <property name="dao" ref="dao"></property>  
  49.     </bean>  
  50.       
  51.     <bean id="dao" class="org.ssh.dao.BaseDao">  
  52.         <property name="sessionFactory" ref="sessionFactory"/>  
  53.     </bean>  
  54. </beans>  

这里主要是配置了hibernate加载我们的实体类Userinfo

同时配置了spring加载我们的dao,service和action...

 

2.struts.xml 配置action

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">  
  3. <struts>  
  4.     <constant name="struts.objectFactory" value="spring" />  
  5.     <package name="MySSH" extends="struts-default">  
  6.         <global-results>  
  7.             <result name="error">/jsp/error.jsp</result>  
  8.             <result name="success">/jsp/success.jsp</result>  
  9.         </global-results>  
  10.         <action name="userManagerAct" class="userAct" method="doLogin">  
  11.             <result name="login">/index.jsp</result>  
  12.         </action>  
  13.           
  14.         <action name="query" class="userAct" method="doQuery" />  
  15.         <action name="delete" class="userAct" method="doDelete" />  
  16.         <action name="edit" class="userAct" method="doEdit">  
  17.             <result name="editUser">/jsp/editUser.jsp</result>  
  18.         </action>  
  19.           
  20.         <action name="add" class="userAct" method="doAdd">  
  21.             <result name="addUser">/jsp/addUser.jsp</result>  
  22.         </action>  
  23.     </package>  
  24. </struts>      

 

3.最后配置web.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>    
  2. <web-app version="3.0"     
  3.     xmlns="http://java.sun.com/xml/ns/javaee"     
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee     
  6.     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">    
  7.   <display-name></display-name>     
  8.       
  9.     <!-- Spring配置和监听start -->    
  10.     <context-param>    
  11.         <param-name>contextConfigLocation</param-name>    
  12.         <param-value>/WEB-INF/classes/application*.xml</param-value>    
  13.     </context-param>    
  14.     <listener>    
  15.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    
  16.     </listener>    
  17.     <!--end-->    
  18.       
  19.   <welcome-file-list>    
  20.     <welcome-file>index.jsp</welcome-file>    
  21.   </welcome-file-list>    
  22.   <filter>    
  23.     <filter-name>struts2</filter-name>    
  24.     <filter-class>    
  25.         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter    
  26.     </filter-class>    
  27.   </filter>    
  28.   <filter-mapping>    
  29.     <filter-name>struts2</filter-name>    
  30.     <url-pattern>*.action</url-pattern>    
  31.   </filter-mapping></web-app>   


好了,配置完成了。接下来还要写一些jsp文件让这个蛋疼的东西飞起来

1.index.jsp

[html] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>用户登录</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.   </head>  
  20.     
  21.   <body>  
  22.         <font size="4">这个一个 struts2,spring 和 hibernate 使用的例子。请用以下账号密码登录<br>  
  23.             默认账号/密码: <font color="red">anan/123</font><br>  
  24.             <br>请事先在数据库插入用户信息  
  25.         </font>  
  26.             <br>  
  27.             <br>  
  28.         <form action="userManagerAct.action" method="post">  
  29.             <table>  
  30.                 <tr>  
  31.                     <td>username</td><td><input type="text" name="user.uname"/></td>  
  32.                     <td>password</td><td><input type="password" name="user.password"/></td><td>密     码</td><td></td>  
  33.                 </tr>  
  34.                 <tr>  
  35.                     <td colspan="2">  
  36.                         <input type="submit" value="submit">  
  37.                         <input type="reset" value="reset">  
  38.                     </td>  
  39.                 </tr>  
  40.             </table>  
  41.         </form>  
  42.   </body>  
  43. </html>  


2.addUser.jsp

 

[html] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  3. <%  
  4. String path = request.getContextPath();  
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  6. %>  
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9. <html>  
  10. <head>  
  11. <base href="<%=basePath%>">  
  12.   
  13. <title>user list page</title>  
  14.   
  15. <meta http-equiv="pragma" content="no-cache">  
  16. <meta http-equiv="cache-control" content="no-cache">  
  17. <meta http-equiv="expires" content="0">  
  18. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  19. <meta http-equiv="description" content="This is my page">  
  20. </head>  
  21. <body>  
  22.     <form action="add.action" method="post">  
  23.         <table width="500" align="center">  
  24.             <caption>ADD USER INFORMATION</caption>  
  25.             <tr height="26px">  
  26.                 <td width="150px" align="right">UNAME</td>  
  27.                 <td width="350px">  
  28.                     <input type="hidden" name="param" value="1"/>  
  29.                     <input type="text"  name="user.uname" value="${user.uname }"/>  
  30.                 </td>  
  31.             </tr>  
  32.             <tr height="26px">  
  33.                 <td align="right">PASSWORD</td>  
  34.                 <td><input type="password"  name="user.password" value="${user.password }"/></td>  
  35.             </tr>  
  36.             <tr height="26px">  
  37.                 <td align="right">SEX</td>  
  38.                 <td>  
  39.                     <select name="user.sex">  
  40.                         <option value="male">male</option>  
  41.                         <option value="female">female</option>  
  42.                     </select>  
  43.                 </td>  
  44.             </tr>  
  45.             <tr height="26px">  
  46.                 <td align="right">TELPHONE</td>  
  47.                 <td><input type="text"  name="user.telphone" value="${user.telphone }"/></td>  
  48.             </tr>  
  49.             <tr height="26px">  
  50.                 <td align="right">ADDRESS</td>  
  51.                 <td><input type="text"  name="user.address" value="${user.address }"/></td>  
  52.             </tr>  
  53.             <tr height="26px">  
  54.                 <td colspan="2"  align="center" width="500">  
  55.                     <input type="submit" value="Save"/>  
  56.                     <input type="button" value="Back" onclick="window.history.back(-1)"/>  
  57.                 </td>  
  58.             </tr>  
  59.         </table>  
  60.     </form>  
  61. </body>  
  62. </html>  


 

 


3.editUser.jsp

[html] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  3. <%  
  4. String path = request.getContextPath();  
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  6. %>  
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9. <html>  
  10. <head>  
  11. <base href="<%=basePath%>">  
  12.   
  13. <title>user list page</title>  
  14.   
  15. <meta http-equiv="pragma" content="no-cache">  
  16. <meta http-equiv="cache-control" content="no-cache">  
  17. <meta http-equiv="expires" content="0">  
  18. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  19. <meta http-equiv="description" content="This is my page">  
  20. </head>  
  21. <body>  
  22.     <form action="edit.action" method="post">  
  23.         <table width="500" align="center">  
  24.             <caption>User Information Edit</caption>  
  25.             <tr height="26px">  
  26.                 <td width="150px" align="right">NO.</td>  
  27.                 <td width="350px">  
  28.                     <input type="text"  name="user.id" value="${user.id }" readonly="readonly"/>  
  29.                     <input type="hidden" name="user.password" value="${user.password }"/>  
  30.                     <input type="hidden" name="param" value="1"/>  
  31.                 </td>  
  32.             </tr>  
  33.             <tr height="26px">  
  34.                 <td width="160" align="right">UNAME</td>  
  35.                 <td><input type="text"  name="user.uname" value="${user.uname }"/></td>  
  36.             </tr>  
  37.             <tr height="26px">  
  38.                 <td width="70" align="right">SEX</td>  
  39.                 <td>  
  40.                     <select name="user.sex">  
  41.                         <option value="male">male</option>  
  42.                         <option value="female">female</option>  
  43.                     </select>  
  44.                 </td>  
  45.             </tr>  
  46.             <tr height="26px">  
  47.                 <td width="150"  align="right">TELPHONE</td>  
  48.                 <td><input type="text"  name="user.telphone" value="${user.telphone }"/></td>  
  49.             </tr>  
  50.             <tr height="26px">  
  51.                 <td width="300"  align="right">ADDRESS</td>  
  52.                 <td><input type="text"  name="user.address" value="${user.address }"/></td>  
  53.             </tr>  
  54.             <tr height="26px">  
  55.                 <td colspan="2" align="center">  
  56.                     <input type="submit" value="Save"/>  
  57.                     <input type="button" value="Back" onclick="window.history.back(-1)"/>  
  58.                 </td>  
  59.             </tr>  
  60.         </table>  
  61.     </form>  
  62. </body>  
  63. </html>  


4.error.jsp

[html] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%  
  3. String path = request.getContextPath();  
  4. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  5. %>  
  6.   
  7. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  8. <html>  
  9.   <head>  
  10.     <base href="<%=basePath%>">  
  11.       
  12.     <title>My JSP 'error.jsp' starting page</title>  
  13.       
  14.     <meta http-equiv="pragma" content="no-cache">  
  15.     <meta http-equiv="cache-control" content="no-cache">  
  16.     <meta http-equiv="expires" content="0">      
  17.     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  18.     <meta http-equiv="description" content="This is my page">  
  19.     <!-- 
  20.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  21.     -->  
  22.       
  23.   </head>  
  24.     
  25.   <body>  
  26.         登录失败,2秒后自动转到登录页面....  
  27.         <script type="text/javascript">  
  28.             setTimeout(reDo, 2000);  
  29.             function reDo(){  
  30.                 window.location.href = "/struts2_spring_hibernate1.0/index.jsp";  
  31.             }  
  32.         </script>  
  33.   </body>  
  34. </html>  

5.sucess.jsp

 

[plain] view plaincopy
  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
  2. <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>  
  3. <%  
  4. String path = request.getContextPath();  
  5. String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
  6. %>  
  7.   
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  9. <html>  
  10. <head>  
  11. <base href="<%=basePath%>">  
  12.   
  13. <title>user list page</title>  
  14.   
  15. <meta http-equiv="pragma" content="no-cache">  
  16. <meta http-equiv="cache-control" content="no-cache">  
  17. <meta http-equiv="expires" content="0">  
  18. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  19. <meta http-equiv="description" content="This is my page">  
  20. </head>  
  21. <body>  
  22.     <form action="query.action" method="post">  
  23.         <table align="center">  
  24.             <tr>  
  25.                 <td style="vertical-align: middle;">USERNAME  
  26.                     <input type="text" style="width: 300px;height: 30px;font-size: 16px" name="queryText"  value="${searchText }"/>  
  27.                     <input type="submit" value="Query" style="width: 100px;height: 30px;font-size: 16px"/>  
  28.                     <input type="button" value="Add" style="width: 100px;height: 30px;font-size: 16px"   
  29.                         onclick="window.location.href='add.action?param=0'"/>  
  30.                 </td>  
  31.             </tr>  
  32.         </table>  
  33.     </form>  
  34.       
  35.     <table align="center" border="1" cellpadding="0" cellspacing="0" bordercolor="#3366cc">  
  36.         <tr align="center" bgcolor="#3399cc" height="26px">  
  37.             <td width="100">NO.</td>  
  38.             <td width="160">UNAME</td>  
  39.             <td width="70">SEX</td>  
  40.             <td width="150">TELPHONE</td>  
  41.             <td width="300">ADDRESS</td>  
  42.             <td width="120">EDIT/DELETE</td>  
  43.         </tr>  
  44.           
  45.         <c:forEach var="user" items="${users }">  
  46.             <tr align="center"  height="24px">  
  47.                 <td width="100">${user.id}</td>  
  48.                 <td width="160">${user.uname}</td>  
  49.                 <td width="70">${user.sex }</td>  
  50.                 <td width="150">${user.telphone }</td>  
  51.                 <td width="300">${user.address}</td>  
  52.                 <td width="120">  
  53.                     <a href="edit.action?param=0&id=${user.id}">编辑</a>    
  54.                     <a href="delete.action?id=${user.id}">删除</a>  
  55.                 </td>  
  56.             </tr>  
  57.         </c:forEach>  
  58.     </table>  
  59. </body>  
  60. </html>  


 

 

全部文件应该都搞定了,相比上一次的工程需要添加一些jar包,稍后我把整个工程代码上传。或者大家自己去找缺少的jar包

运行一下:

 

 

 

程序运行成功,有点成就感...

 

总结一下:

基于ssh开发环境搭建相比起来确实麻烦不少,特别是jar的依赖,而且要整套搞起来东西还是挺多的。但是搞鼓完了之后收获还是蛮大的,之前学习的很多概念性的东西都不理解,搞完这个之后貌似都有点感觉了。ssh真不愧是经典的框架之一,下次我将用注解来实现

 

工程下载地址:

http://download.csdn.net/detail/yunji3344/4890206

0 0