首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

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

2012-09-28 
Struts2.2+Spring3.1+Hibernate3.6整合(登录示例及CRUD操作)一 运行环境: XP3+Myeclipse6.6+Tomcat7二 项

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 version="1.0" encoding="UTF-8"?><web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee  http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"><context-param>  <param-name>webAppRootKey</param-name>  <param-value>s2sh.root</param-value> </context-param>    <context-param>        <param-name>            contextConfigLocation        </param-name>        <param-value>            classpath*:applicationContext.xml        </param-value>    </context-param><context-param>   <param-name>log4jConfigLocation</param-name>   <param-value>/WEB-INF/classes/log4j.properties</param-value></context-param>  <context-param>  <param-name>log4jRefreshInterval</param-name>  <param-value>60000</param-value> </context-param> <context-param><param-name>log4jExposeWebAppRoot</param-name><param-value>false</param-value></context-param>    <listener>        <listener-class>            org.springframework.web.context.ContextLoaderListener        </listener-class>    </listener><listener>   <listener-class>org.springframework.web.util.Log4jConfigListener   </listener-class></listener>             <filter>        <filter-name>            encodingFilter        </filter-name>        <filter-class>            org.springframework.web.filter.CharacterEncodingFilter        </filter-class>        <init-param>            <param-name>                encoding            </param-name>            <param-value>                UTF-8            </param-value>        </init-param>    </filter>        <filter-mapping>        <filter-name>            encodingFilter        </filter-name>        <url-pattern>            /*        </url-pattern>    </filter-mapping>        <filter>        <filter-name>            openSessionInView        </filter-name>        <filter-class>            org.springframework.orm.hibernate3.support.OpenSessionInViewFilter        </filter-class>    </filter>        <filter-mapping>        <filter-name>            openSessionInView        </filter-name>        <url-pattern>            /*        </url-pattern>    </filter-mapping>            <filter>        <filter-name>            struts2        </filter-name>        <filter-class>            org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter        </filter-class>    </filter>        <filter-mapping>        <filter-name>            struts2        </filter-name>        <url-pattern>            /*        </url-pattern>    </filter-mapping>        <welcome-file-list>        <welcome-file>            index.jsp        </welcome-file>    </welcome-file-list></web-app>


Struts2.xml文件如下:
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"    "http://struts.apache.org/dtds/struts-2.0.dtd">    <struts>    <package name="user" extends="struts-default">        <action name="userAction" name="code"><?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="http://www.springframework.org/schema/context"xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd           http://www.springframework.org/schema/context           http://www.springframework.org/schema/context/spring-context-3.0.xsd           http://www.springframework.org/schema/aop           http://www.springframework.org/schema/aop/spring-aop-3.0.xsd           http://www.springframework.org/schema/tx            http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">           <context:annotation-config /><context:component-scan base-package="com.liuzd.s2sh" /><beandestroy-method="close" /><property name="url" value="${jdbc.url}" /><property name="username" value="${jdbc.username}" /><property name="password" value="${jdbc.password}" /></bean><bean id="sessionFactory"ref="dataSource" /> <property name="packagesToScan"><list><value>com.liuzd.s2sh.entity</value></list></property><property name="hibernateProperties"><props><prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop><prop key="hibernate.show_sql">true</prop><prop key="format_sql">true</prop></props></property></bean><!-- 让spring管理sessionFactory的加一种方法 ,就是不删除hibernate.cfg.xml文件; <bean id="sessionFactory" ref="sessionFactory"></property></bean><bean id="jdbcTemplate" ref="dataSource"></property></bean><bean id="txManager"ref="sessionFactory" /></bean><aop:config><aop:pointcut id="bussinessService"expression="execution(public * com.liuzd.s2sh.service.*.*(..))" /><aop:advisor pointcut-ref="bussinessService"advice-ref="txAdvice" /></aop:config><tx:advice id="txAdvice" transaction-manager="txManager"><tx:attributes><tx:method name="*" />  <tx:method name="add*" propagation="REQUIRED"/><tx:method name="del*" propagation="REQUIRED"/><tx:method name="edit*" propagation="REQUIRED"/></tx:attributes></tx:advice></beans>

jdbc.properties属性文件如下:
jdbc.driverClassName=oracle.jdbc.driver.OracleDriverjdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcljdbc.username=liuzdjdbc.password=liuzd

log4j.properties属性文件如下:
log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%nlog4j.appender.db=org.apache.log4j.FileAppenderlog4j.appender.db.File=${s2sh.root}/WEB-INF/logs/ssh.loglog4j.appender.db.Append=truelog4j.appender.db.layout=org.apache.log4j.PatternLayoutlog4j.appender.db.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} [%-5p][%c{1}] - %m%n

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

import java.util.Map;import javax.servlet.http.HttpServletRequest;import org.apache.struts2.ServletActionContext;import org.apache.struts2.interceptor.SessionAware;import com.opensymphony.xwork2.ActionContext;import com.opensymphony.xwork2.ActionSupport;public class BaseAction extends ActionSupport implements SessionAware{private static final long serialVersionUID = 1L;public void setSession(Map<String, Object> sessionMap) {}protected Map<String,Object> getSession(){return  (Map<String,Object>)ActionContext.getContext().getSession();}protected HttpServletRequest getRequest(){return ServletActionContext.getRequest (); }}


UserAction Code:

import java.util.List;import javax.annotation.Resource;import org.springframework.context.annotation.Scope;import org.springframework.stereotype.Component;import com.liuzd.s2sh.entity.User;import com.liuzd.s2sh.service.UserService;@Component("u")@Scope("prototype")public class UserAction extends BaseAction {private static final long serialVersionUID = 1L;private UserService userService = null;private String message = null;private User user = null;private String action = null;public String getAction() {return action;}public void setAction(String action) {this.action = action;}public User getUser() {return user;}public void setUser(User user) {this.user = user;}@Overridepublic String execute() throws Exception {System.out.println("user: "+user);User dbUser = this.userService.checkUserExits(user);if (null != dbUser) {message = "用户: " + user.getUsername() + "登录成功";System.out.println(message);getSession().put("sessionUser",dbUser);return userList();}message = "用户: " + user.getUsername() + "登录失败";return "fail";}public String loadUser(){ action = "update"; message = "编辑用户信息"; User loadUser = new User(); loadUser.setId(user.getId()); user = this.userService.getUserByUid(loadUser); this.getRequest().setAttribute("myname","天涯海角"); this.getSession().put("mysex", "男"); System.out.println("loaduser: "+user);  return "user";}public String addUser(){ action = "add"; return "user";}public String saveUser(){ this.userService.addUser(user); return "user";}public String delUser(){action = "del";this.userService.delUser(user);return userList();}public String editUser(){ System.out.println("action: "+action+",编辑用户: "+user); if("update".equals(action)){   this.userService.editUser(user); }else if("add".equals(action)){ saveUser(); } return userList();}public String userList(){ List<User> userList = this.userService.getUserList(); System.out.println("usersize: "+userList.size() + ",user: " + userList.get(0)); getRequest().setAttribute("userList", userList); return "userList";}public UserService getUserService() {return userService;}@Resourcepublic void setUserService(UserService userService) {this.userService = userService;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}}


Service层:
UserService Code:

import java.util.List;import com.liuzd.s2sh.entity.User;public interface UserService {public User checkUserExits(User user) throws Exception;public void addUser(User user);public void editUser(User user);public void delUser(User user);public List<User> getUserList();public User getUserByUid(User user);}


UserServiceImpl Code:

import java.util.List;import javax.annotation.Resource;import org.springframework.stereotype.Component;import com.liuzd.s2sh.dao.UserDAO;import com.liuzd.s2sh.entity.User;import com.liuzd.s2sh.service.UserService;@Component("userService")public class UserServiceImpl implements UserService {private UserDAO userDao = null;public UserDAO getUserDao() {return userDao;}@Resourcepublic void setUserDao(UserDAO userDao) {this.userDao = userDao;}public User checkUserExits(User user) throws Exception {return this.userDao.getUserByUserIdAndUserNameExits(user);}@Overridepublic void delUser(User user) {this.userDao.delUser(user);}@Overridepublic User getUserByUid(User user) {return this.userDao.getUser(user);}@Overridepublic List<User> getUserList() {return this.userDao.finUserAll();}@Overridepublic void addUser(User user) {String id =String.valueOf(new java.util.Random().nextInt(100));//user.setId(id);System.out.println("添加: "+user);this.userDao.saveUser(user);}@Overridepublic void editUser(User user) {this.userDao.updateUser(user);}}


Entity层:
User Code:

@Entity@Table(name="users")public class User {private String id = null;private String username = null;private String password = null;private String address = null;private String sex = null;private Integer age = null;public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}/* * 适合ID为int,short,long的情况 * @Id@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="SEQ_USER")@SequenceGenerator(name="SEQ_USER",sequenceName="S_USER",allocationSize=1)*/@Id @GeneratedValue(generator="system-uuid")@GenericGenerator(name="system-uuid", strategy = "uuid")public String getId() {return id;}public void setId(String id) {this.id = id;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}@Overridepublic String toString() {return "name: " + username + ",password: " + password+",sex: " + sex + ",age: " + age+",address: " + address + ",id: " + id;}}


DAO层:

UserDAO Code:

import java.util.List;import com.liuzd.s2sh.entity.User;public interface UserDAO {/** * 检查用户是否存在 * */public User getUserByUserIdAndUserNameExits(User user);public void saveUser(User user);public void updateUser(User user);public User getUser(User user);public void delUser(User user);public List<User> finUserAll();}

UserDAOImpl Code:

import java.util.List;import javax.annotation.Resource;import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.stereotype.Component;import com.liuzd.s2sh.dao.UserDAO;import com.liuzd.s2sh.entity.User;@Component("userDao")public class UserDAOImpl implements UserDAO {private HibernateTemplate hibernateTemplate; public HibernateTemplate getHibernateTemplate() {return hibernateTemplate;}@Resourcepublic void setHibernateTemplate(HibernateTemplate hibernateTemplate) {this.hibernateTemplate = hibernateTemplate;}public User getUserByUserIdAndUserNameExits(User user) {List<User> users = hibernateTemplate.find("from User u where u.username = '" + user.getUsername() + "' and u.password='"+user.getPassword()+"'");if (users != null && users.size() > 0) {return users.get(0);}return null;}@Overridepublic void saveUser(User user) {this.hibernateTemplate.save(user);}@Overridepublic void delUser(User user) {User delUser = getUser(user);this.hibernateTemplate.delete(delUser);}@Overridepublic List<User> finUserAll() {return this.hibernateTemplate.find("from User");}@Overridepublic User getUser(User user) {return this.hibernateTemplate.load(User.class,user.getId());}@Overridepublic void updateUser(User user) {this.hibernateTemplate.update(user);}}


3 JSp代码如下:
Login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><html><head>    <title>Sign On</title></head><body><s:form action="userAction">    <s:textfield key="user.username"/>    <s:password key="user.password" />    <s:submit/></s:form></body></html>


Success.jsp,fail.jsp

<%@ page contentType="text/html; charset=UTF-8" %><%@ taglib prefix="s" uri="/struts-tags" %><html><head>   </head><body><s:property value="message"/><br><a href="${pageContext.request.contextPath}">返回</a><s:debug></s:debug></body></html>


User.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags" %><html><head>    <title>用户信息</title></head><body><s:form action="userAction!editUser.action"><input type="hidden" name="action" value='<s:property value="action"/>'/><s:property value="message"/><br><s:if test="user.id != null">  <s:property value="user.id"/>,<s:property value="user.username"/>,<s:property value="user.age"/>,<s:property value="user.sex"/>,<s:property value="user.address"/>,<s:property value="user.password"/>,<s:property value="#request.myname"/>,<s:property value="#session.mysex"/></s:if><br>  <table>      <tr>               <td>          <s:hidden name="user.id"/>              <s:textfield label="姓名" name="user.username"/>                   </td>      </tr>      <tr>               <td>          <s:textfield  label="年龄" name="user.age"/>        </td>      </tr>      <tr>                <td>          <s:select label="性别" name="user.sex"       list="#{ 1:'男', 2: '女', 3: '未知'}"    listKey="key"    listValue="value"    ></s:select>        </td>      </tr>      <tr>                <td>          <s:textfield label="密码" name="user.password" size="50"/>        </td>       </tr>      <tr>               <td>          <s:textfield label="地址" name="user.address"/>        </td>      </tr>      <tr>        <td align="right">         <s:submit vlaue="保存"/>        </td>      </tr>    </table></s:form><br><s:debug></s:debug><br><a href="${pageContext.request.contextPath}">返回主页</a><br><s:a href="userAction!userList.action">返回显示</s:a></body></html>


UserList.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib prefix="s" uri="/struts-tags" %><%@ taglib uri="/WEB-INF/c.tld" prefix="c"%><html><head>    <title>用户集合</title></head><body><table width="50%" border="1" cellpadding="1" align="center">  <thead>    <tr>      <th>姓名</th>      <th>年龄</th>      <th>性别</th>      <th>地址</th>        <th>操作</th>        </tr>  </thead>  <tbody>  <!--   <s:iterator value="#request.userList" status="status" > <tr align="center">     <td><s:property value="username"/></td>   <td><s:property value="age"/></td>   <td><s:property value="sex"/></td>   <td><s:property value="address"/></td>       <td>     <s:a href="userAction!addUser.action">添加</s:a> | <s:a href="userAction!loadUser.action?user.id=%{id}">编辑</s:a> |  <a href="<s:url action="userAction!delUser.action"><s:param name="user.id" value="id"/></s:url>">删除</a>   </td> </tr> </s:iterator>    -->   <c:forEach  items="${requestScope.userList}" var="user">    <tr align="center">      <td>${user.username}</td>   <td>${user.age}</td>   <td>${user.sex eq 1 ? "男" : user.sex eq 2 ? "女" : "未知"}</td>   <td>${user.address}</td>   <td>     <a href="${pageContext.request.contextPath}/userAction!addUser.action">添加</a> |      <a href="${pageContext.request.contextPath}/userAction!loadUser.action?user.id=${user.id}">编辑</a> |      <a href="${pageContext.request.contextPath}/userAction!delUser.action?user.id=${user.id}">删除</a>   </td> </tr> </c:forEach>   </tbody></table><br><a href="${pageContext.request.contextPath}">返回</a><br></body></html>


4 Oracle.sql

create table USERS(  id       VARCHAR2(50) not null,  username VARCHAR2(50),  age      NUMBER,  sex      VARCHAR2(1),  address  VARCHAR2(200),  password VARCHAR2(20));alter table USERS add constraint PKUID primary key (ID);insert into USERS (ID, USERNAME, AGE, SEX, ADDRESS, PASSWORD, ROWID)values ('001', 'spring', 25, '1', '成都市', 'spring', '');commit;






楼主辛苦了!!!!!! 给力哥

热点排行