struts2+hibernate3+spring2+myclipse6+mysql实例

来源:互联网 发布:室内平面图软件 编辑:程序博客网 时间:2024/05/21 02:22
今天写了一个简单的struts2+hibernate3+spring2的登陆程序,可以登陆并查看用户列表,后面会把增删改查分页全部做完,欢迎批评指正!

  

写这个小东西出现很多错误,像 spring的listener error struts2 的Error filterStart 还有找不到jar包的null pointer等问题,我用了一个比较省事的办法解决的了这些问题,把有用的jar包直接放到tomcat/common/lib目录下面,应该不用全部放进去,后面可以稍微研究一下

 

我用的包主要有下面这些:

先建几个包,对应的类和配置文件分别是:


  vo:User.java,Person.hbm.xml
  action:LoginAction.java
  dao:IBaseDAO.java,IUserDAO.java
  dao.impl:BaseDAO.java,UserDAOImpl.java
  dao:IUserService.java
  dao.impl:UserServiceImpl.java

 数据库我用mysql5
CREATE TABLE `user` ( `id` int(11) NOT NULL, `name` varchar(40) default NULL, `password` varchar(40) default NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

准备就绪了,开写代码,User.java




  1. package vo;
  2. public class User {
  3.     private Integer id;
  4.     private String name;
  5.     private String password;
  6.     public Integer getId() {
  7.         return id;
  8.     }
  9.     public void setId(Integer id) {
  10.         this.id = id;
  11.     }
  12.     public String getName() {
  13.         return name;
  14.     }
  15.     public void setName(String name) {
  16.         this.name = name;
  17.     }
  18.     public String getPassword() {
  19.         return password;
  20.     }
  21.     public void setPassword(String password) {
  22.         this.password = password;
  23.     }
  24. }

Person.hbm.xml



 

  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 - Hibernate Tools
  6. -->
  7. <hibernate-mapping>
  8.     <class name="vo.User" table="user" catalog="ker">
  9.         <id name="id" type="java.lang.Integer">
  10.             <column name="id" />
  11.             <generator class="native" />
  12.         </id>
  13.         <property name="name" type="java.lang.String">
  14.             <column name="name" length="20" />
  15.         </property>
  16.         <property name="password" type="java.lang.String">
  17.             <column name="password" length="20" />
  18.         </property>
  19.     </class>
  20. </hibernate-mapping>

LoginAction.java



 

  1. package action;
  2. import java.util.Collection;
  3. import java.util.List;
  4. import service.IUserService;
  5. import vo.User;
  6. import com.opensymphony.xwork2.Action;
  7. public class LoginAction implements Action {
  8.     private User user;
  9.     private IUserService userService;
  10.     protected Collection availableItems;
  11.     
  12.     public void setUserService(IUserService userService) {
  13.         this.userService = userService;
  14.     }
  15.     public String execute() throws Exception {
  16.         String retVal = ERROR;
  17.         boolean isLogin = userService.isLogin(user);
  18.         if (isLogin)
  19.             retVal = SUCCESS;
  20.         return retVal;
  21.     }
  22.     
  23.     public String findAll() throws Exception {
  24.         
  25.         List<User> list = userService.findAll(); 
  26.         if (list.size() > 0) {
  27.             availableItems = list;
  28.             
  29.             System.out.println("list "+list.size());
  30.             return SUCCESS;
  31.         }
  32.         return ERROR;
  33.     }
  34.     public User getUser() {
  35.         return user;
  36.     }
  37.     public void setUser(User user) {
  38.         this.user = user;
  39.     }
  40.     public Collection getAvailableItems() {
  41.         return availableItems;
  42.     }
  43.     public void setAvailableItems(Collection availableItems) {
  44.         this.availableItems = availableItems;
  45.     }
  46. }

IBaseDAO.java



  1. package dao;
  2. import org.hibernate.Session;
  3. public interface IBaseDAO {
  4.     public Session getSession();
  5. }

UserDAO.java



 

  1. package dao;
  2. import java.util.List;
  3. import vo.User;
  4. public interface UserDAO {
  5.     public User find(String name, String password);
  6.     public List<User>  findAll();
  7.     public boolean save();
  8.     public boolean delete();
  9. }

BaseDAO.java



 

  1. package dao.impl;
  2. import org.hibernate.Session;
  3. import org.hibernate.SessionFactory;
  4. import dao.IBaseDAO;
  5. public class BaseDAO implements IBaseDAO {
  6.     private SessionFactory sessionFactory;
  7.     
  8.     public SessionFactory getSessionFactory() {
  9.         return sessionFactory;
  10.     }
  11.     public void setSessionFactory(SessionFactory sessionFactory) {
  12.         this.sessionFactory = sessionFactory;
  13.     }
  14.     public Session getSession() {
  15.         
  16.         return sessionFactory.openSession();
  17.     }

UserDAOImpl.java



 

  1. package dao.impl;
  2. import java.util.List;
  3. import org.hibernate.Query;
  4. import org.hibernate.Session;
  5. import org.hibernate.Transaction;
  6. import vo.User;
  7. import dao.UserDAO;
  8. public class UserDAOImpl extends BaseDAO implements UserDAO {
  9.     
  10.     public User find(String name, String password) {
  11.         Session session = getSession();
  12.         //Transaction tran = session.beginTransaction();
  13.         String sql = "FROM User AS u WHERE u.name = ? AND u.password = ?";
  14.         Query q = session.createQuery(sql);
  15.         q.setString(0, name);
  16.         q.setString(1, password);
  17.         List<User> list = q.list();
  18.         //tran.commit();
  19.         session.close();
  20.         if (list.size() == 0)
  21.             return null;
  22.         else
  23.             return list.get(0);
  24.     }
  25.     
  26.     public List<User>  findAll(){
  27.         Session session = getSession();
  28.         Query q = session.createQuery(" from User");
  29.         List<User> list = q.list();
  30.         return list;
  31.         
  32.     }
  33.      
  34.     public boolean save(){
  35.         return true;
  36.     }
  37.     
  38.     public boolean delete(){
  39.         return true;
  40.     }
  41.     
  42. }

IUserService.java



 

  1. package service;
  2. import java.util.List;
  3. import vo.User;
  4. public interface IUserService {
  5.     public boolean isLogin(User user);
  6.     public boolean isLogin(String name, String password);
  7.     public List<User> findAll();
  8.     public boolean save();
  9.     public boolean delete();
  10.     
  11. }

UserServiceImpl.java




  1. package service.impl;
  2. import java.util.List;
  3. import dao.UserDAO;
  4. import service.IUserService;
  5. import vo.User;
  6. public class UserServiceImpl implements IUserService {
  7.     private UserDAO userDAO;
  8.     public void setuserDAO(UserDAO userDAO) {
  9.         this.userDAO = userDAO;
  10.     }
  11.     public boolean isLogin(User user) {
  12.         boolean isLogin = false;
  13.         try {
  14.             User u = userDAO.find(user.getName(), user.getPassword());
  15.             if (u != null) {
  16.                 isLogin = true;
  17.             }
  18.         } catch (Exception e) {
  19.             System.out.println("isLogin error " + e.getMessage());
  20.         }
  21.         return isLogin;
  22.     }
  23.     public boolean isLogin(String name, String password) {
  24.         boolean isLogin = false;
  25.         try {
  26.             User u = userDAO.find(name, password);
  27.             if (u != null) {
  28.                 isLogin = true;
  29.             }
  30.         } catch (Exception e) {
  31.             System.out.println("isLogin error " + e.getMessage());
  32.         }
  33.         return isLogin;
  34.     }
  35.     public List<User> findAll() {
  36.         return userDAO.findAll();
  37.         
  38.     }
  39.      
  40.     public boolean save(){
  41.         return true;
  42.     }
  43.     
  44.     public boolean delete(){
  45.         return true;
  46.     }
  47. }

WEB-INF/web.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.     <filter>
  8.         <filter-name>struts2</filter-name>
  9.         <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
  10.     </filter>
  11.     <!-- FilterDispatcher 用来初始化 strtus2 并且处理所有的 web 请求 -->
  12.     <filter-mapping>
  13.         <filter-name>struts2</filter-name>
  14.         <url-pattern>/*</url-pattern>
  15.     </filter-mapping>
  16.     <listener>
  17.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  18.     </listener>
  19. </web-app>

ApplicationContext.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:aop="http://www.springframework.org/schema/aop"
  5.     xmlns:tx="http://www.springframework.org/schema/tx"
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans 
  7.   http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  8.   http://www.springframework.org/schema/aop 
  9.   http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  10.   http://www.springframework.org/schema/tx 
  11.   http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
  12.     <import resource="classes/ApplicationBeans.xml" />
  13.     <bean id="loginAction" class="action.LoginAction" scope="prototype">
  14.         <property name="userService" ref="userService" />
  15.     </bean>
  16.     
  17. </beans>

classes/struts.xml



  1. <?xml version="1.0" encoding="GBK"?>
  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="login" extends="struts-default">
  7.         <action name="Login" class="loginAction">
  8.             <result name="success" type="redirect">/Show.action</result>
  9.             <result name="error">/login/error.jsp</result>
  10.         </action>
  11.         <action name="Show" class="loginAction" method="findAll">
  12.             <result name="success">/login/success.jsp</result>
  13.             <result name="error">/login/error.jsp</result>
  14.         </action>
  15.     </package>
  16. </struts>

classes/ApplicationBeans.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:aop="http://www.springframework.org/schema/aop"
  5.     xmlns:tx="http://www.springframework.org/schema/tx"
  6.     xsi:schemaLocation="http://www.springframework.org/schema/beans 
  7.   http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
  8.   http://www.springframework.org/schema/aop 
  9.   http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
  10.   http://www.springframework.org/schema/tx 
  11.   http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
  12.     <!-- dataSource config -->
  13.     <bean id="configBean"
  14.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
  15.         <property name="location"
  16.             value="/WEB-INF/classes/dataSource.properties" />
  17.     </bean>
  18.     <bean id="dataSource"
  19.         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
  20.         <!--
  21.             <property name="driverClassName" value="com.mysql.jdbc.Driver" />
  22.             <property name="url" value="jdbc:mysql://localhost:3306/yufei" />
  23.             <property name="username" value="root" />
  24.             <property name="password" value="yufei101" />
  25.         -->
  26.         <property name="driverClassName"
  27.             value="${dataSource.driverClassName}" />
  28.         <property name="url" value="${dataSource.url}" />
  29.         <property name="username" value="${dataSource.username}" />
  30.         <property name="password" value="${dataSource.password}" />
  31.     </bean>
  32.     <!-- SessionFactory -->
  33.     <bean id="sessionFactory"
  34.         class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  35.         <property name="dataSource" ref="dataSource" />
  36.         <property name="mappingResources">
  37.             <list>
  38.                 <value>vo/Person.hbm.xml</value>
  39.             </list>
  40.         </property>
  41.         <property name="hibernateProperties">
  42.             <props>
  43.                 <prop key="hibernate.dialect">
  44.                     org.hibernate.dialect.MySQLDialect
  45.                 </prop>
  46.                 <prop key="show_sql">true</prop>
  47.             </props>
  48.         </property>
  49.     </bean>
  50.     <!-- dao -->
  51.     <bean id="baseDAO" class="dao.impl.BaseDAO">
  52.         <property name="sessionFactory">
  53.             <ref bean="sessionFactory" />
  54.         </property>
  55.     </bean>
  56.     
  57.     <bean id="userDAO" class="dao.impl.UserDAOImpl"
  58.             parent="baseDAO">
  59.     </bean>
  60.     <!-- service -->
  61.     <bean id="userService" class="service.impl.UserServiceImpl">
  62.         <property name="userDAO" ref="userDAO" />
  63.     </bean>
  64.     <!-- view -->
  65.     <bean id="loginAction" class="action.loginAction" >
  66.         <property name="userService">
  67.             <ref bean="userService"/>
  68.         </property>
  69.     </bean>  
  70. </beans>

struts.properties


  1. struts.objectFactory = spring
  2. logj.properties
  3. ### direct log messages to stdout ###
  4. log4j.appender.stdout=org.apache.log4j.ConsoleAppender
  5. log4j.appender.stdout.Target=System.out
  6. log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
  7. log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  8. ### direct messages to file hibernate.log ###
  9. #log4j.appender.file=org.apache.log4j.FileAppender
  10. #log4j.appender.file.File=hibernate.log
  11. #log4j.appender.file.layout=org.apache.log4j.PatternLayout
  12. #log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n
  13. ### set log levels - for more verbose logging change ''info'' to ''debug'' ###
  14. log4j.rootLogger=warn, stdout
  15. log4j.logger.org.hibernate=info
  16. #log4j.logger.org.hibernate=debug
  17. ### log HQL query parser activity
  18. #log4j.logger.org.hibernate.hql.ast.AST=debug
  19. ### log just the SQL
  20. #log4j.logger.org.hibernate.SQL=debug
  21. ### log JDBC bind parameters ###
  22. log4j.logger.org.hibernate.type=info
  23. #log4j.logger.org.hibernate.type=debug
  24. ### log schema export/update ###
  25. log4j.logger.org.hibernate.tool.hbm2ddl=debug
  26. ### log HQL parse trees
  27. #log4j.logger.org.hibernate.hql=debug
  28. ### log cache activity ###
  29. #log4j.logger.org.hibernate.cache=debug
  30. ### log transaction activity
  31. #log4j.logger.org.hibernate.transaction=debug
  32. ### log JDBC resource acquisition
  33. #log4j.logger.org.hibernate.jdbc=debug
  34. ### enable the following line if you want to track down connection ###
  35. ### leakages when using DriverManagerConnectionProvider ###
  36. #log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace

dataSource.properties
插入代码的插件忽然不好用了,好在剩下不多了,直接贴上了

  1. dataSource.driverClassName=org.gjt.mm.mysql.Driver
  2. dataSource.url=jdbc:mysql://localhost:3306/ker
  3. dataSource.username=root
  4. dataSource.password=root

页面:erro.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
  2. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  3. <html>
  4.   <head>
  5.     <title>登录失败</title>
  6.     
  7.  <meta http-equiv="pragma" content="no-cache">
  8.  <meta http-equiv="cache-control" content="no-cache">
  9.  <meta http-equiv="expires" content="0">    
  10.  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  11.  <meta http-equiv="description" content="This is my page">
  12.  <!--
  13.  <link rel="stylesheet" type="text/css" href="styles.css">
  14.  -->
  15.   </head>
  16.   
  17.   <body>
  18.  登录失败
  19.   </body>
  20. </html>

login.jsp

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
  2. <%@taglib prefix="s" uri="/struts-tags"%>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5.  <head>
  6.   <title>用户登录</title>
  7.   <meta http-equiv="pragma" content="no-cache">
  8.   <meta http-equiv="cache-control" content="no-cache">
  9.   <meta http-equiv="expires" content="0">
  10.   <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  11.   <meta http-equiv="description" content="This is my page">
  12.   <!--
  13.  <link rel="stylesheet" type="text/css" href="styles.css">
  14.  -->
  15.  </head>
  16.  <body>
  17.   <s:form action="Login.action" name="login">
  18.    <s:textfield name="user.name" label="用户名" value="wf"></s:textfield>
  19.    <s:textfield name="user.password" label="密  码" value="wife"></s:textfield>
  20.    <s:submit value="登录"></s:submit>
  21.   </s:form>
  22.  </body>
  23. </html>

success.jsp ,对此页面,如果是前面的步骤操作的话,一步不改动的话,删除下面代码中的这两行记录

  1. 34.行   <td align="center"><a href="update.action?user.id=<s:property value='id' />&action=loading" >update</a></td>
  2. 35.行    <td align="center"><a href="delete.action?user.id=<s:property value='id' />" >delete</a></td>
  1. <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
  2. <%@ taglib uri="/struts-tags" prefix="s" %>
  3. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  4. <html>
  5.   <head>
  6.   
  7.     <title>登录成功</title>
  8.     
  9.  <meta http-equiv="pragma" content="no-cache">
  10.  <meta http-equiv="cache-control" content="no-cache">
  11.  <meta http-equiv="expires" content="0">    
  12.  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
  13.  <meta http-equiv="description" content="This is my page">
  14.  <!--
  15.  <link rel="stylesheet" type="text/css" href="styles.css">
  16.  -->
  17.   </head>
  18.   
  19.   <body>
  20.  <p></p>
  21.   <table border="1" width="50%" align="center">
  22.      <tr bgcolor="#cccc00">
  23.       <td align="center">UserId</td>
  24.       <td align="center">UserName</td>
  25.       <td align="center">Password</td>
  26.       <td colspan="2" align="center">Options</td>
  27.      </tr>
  28.      <s:iterator value="availableItems">
  29.      <tr>
  30.       <td align="center"><s:property value="id" /></td>
  31.       <td align="center"><s:property value="name" /></td>
  32.       <td align="center"><s:property value="password" /></td>
  33.       <td align="center"><a href="update.action?user.id=<s:property value='id' />&action=loading" >update</a></td>
  34.       <td align="center"><a href="delete.action?user.id=<s:property value='id' />" >delete</a></td>
  35.      </tr>
  36.      </s:iterator>
  37.     </table>
  38.   </body>
  39. </html>
原创粉丝点击