手动配置SSH框架

来源:互联网 发布:高阳哪有开淘宝店的 编辑:程序博客网 时间:2024/06/10 18:41
注:本文使用版本:struts-2.3.4、spring-3.2.1、hibernate-4.1.4

一、框架的下载
1、Struts2:http://struts.apache.org/download 
2、Spring:http://www.springsource.org/download/community
3、Hibernate:http://sourceforge.net/projects/hibernate/files/hibernate4/

二、创建项目,添加jar包
1、创建java web项目testSSH.
2、添加struts包:
[plain] view plaincopy
  1. aopalliance-1.0.jar、  
  2. freemarker-2.3.19.jar,  
  3. ognl-3.0.5.jar,  
  4. struts2-core-2.3.4.jar,  
  5. struts2-spring-plugin-2.3.4.jar,  
  6. xwork-core-2.3.4.jar,  
  7. commons-fileupload-1.2.2.jar、  
  8. commons-io-2.0.1.jar、  
  9. commons-lang-2.4.jar、  
  10. commons-lang3-3.1.jar、  
  11. commons-logging-api-1.1.jar。  
3、添加spring包:
[plain] view plaincopy
  1. spring-aop-3.2.1.RELEASE.jar、  
  2. spring-aspects-3.2.1.RELEASE.jar、  
  3. spring-beans-3.2.1.RELEASE.jar、  
  4. spring-context-3.2.1.RELEASE.jar、  
  5. spring-context-support-3.2.1.RELEASE.jar、  
  6. spring-core-3.2.1.RELEASE.jar、  
  7. spring-expression-3.2.1.RELEASE.jar、  
  8. spring-jdbc-3.2.1.RELEASE.jar、  
  9. spring-orm-3.2.1.RELEASE.jar、  
  10. spring-test-3.2.1.RELEASE.jar、  
  11. spring-tx-3.2.1.RELEASE.jar、  
  12. spring-web-3.2.1.RELEASE.jar。  
4、添加hibernate包:
[plain] view plaincopy
  1. antlr-2.7.7.jar、  
  2. dom4j-1.6.1.jar、  
  3. hibernate-commons-annotations-4.0.1.Final.jar、  
  4. hibernate-core-4.1.4.Final.jar、  
  5. hibernate-jpa-2.0-api-1.0.1.Final.jar、  
  6. javassist-3.15.0-GA.jar、  
  7. jboss-logging-3.1.0.GA.jar、  
  8. jboss-transaction-api_1.1_spec-1.0.0.Final.jar、  
  9. ehcache-core-2.4.3.jar、  
  10. hibernate-ehcache-4.1.4.Final.jar、  
  11. slf4j-api-1.6.1.jar、  
  12. c3p0-0.9.1.jar  
5、添加其他包:
[plain] view plaincopy
  1. ojdbc14.jar 【下载地址 http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html 】  
  2. aspectjweaver.jar 【下载地址 http://search.maven.org/remotecontent?filepath=org/aspectj/aspectjweaver/1.6.12/aspectjweaver-1.6.12.jar 】  
三、配置struts
1、配置struts核心过滤器。
打开web.xml,配置struts核心过滤器和过滤器映射。
web.xml文件代码如下:
[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  
  6.     <display-name></display-name>  
  7.       
  8.     <!-- 定义Struts 2的核心控制器 -->   
  9.     <filter>  
  10.         <filter-name>struts2</filter-name>  
  11.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  12.     </filter>  
  13.     <filter-mapping>  
  14.         <filter-name>struts2</filter-name>  
  15.         <url-pattern>*.action</url-pattern>  
  16.     </filter-mapping>  
  17.   
  18.     <listener>  
  19.         <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>  
  20.     </listener>  
  21.   
  22.     <welcome-file-list>  
  23.         <welcome-file>index.html</welcome-file>  
  24.         <welcome-file>index.htm</welcome-file>  
  25.         <welcome-file>index.jsp</welcome-file>  
  26.         <welcome-file>default.html</welcome-file>  
  27.         <welcome-file>default.htm</welcome-file>  
  28.         <welcome-file>default.jsp</welcome-file>  
  29.     </welcome-file-list>  
  30.   
  31. </web-app>  
2、建立BaseAction。
新建包com.hsinghsu.testSSH.action,在其中建立类BaseAction,继承ActionSupport类。
BaseAction.java文件代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.action;  
  2.   
  3. import com.opensymphony.xwork2.ActionSupport;  
  4.   
  5. public class BaseAction  extends ActionSupport{  
  6.   
  7.     /** 
  8.      *  
  9.      */  
  10.     private static final long serialVersionUID = 4565394360208096613L;  
  11.   
  12. }  
3、编写测试struts的Action。
在包com.hsinghsu.testSSH.action中建立LoginAction类,继承BaseAction,作为简单的struts测试。
LoginAction.java文件代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.action;  
  2.   
  3. public class LoginAction extends BaseAction {  
  4.   
  5.     /** 
  6.      *  
  7.      */  
  8.     private static final long serialVersionUID = -6144396976094110475L;  
  9.       
  10.     public String execute() throws Exception   
  11.     {    
  12.         return "success";    
  13.     }    
  14.   
  15. }  
4、配置action。
在struts.xml文件中,添加对LoginAction的配置。
struts.xml文件代码如下:
[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3. <!DOCTYPE struts PUBLIC  
  4.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  5.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  6.   
  7. <struts>  
  8.     <constant name="struts.objectFactory" value="spring" />  
  9.     <constant name="struts.i18n.encoding" value="UTF-8" />  
  10.     <constant name="struts.i18n.reload" value="false" />  
  11.     <constant name="struts.configuration.xml.reload" value="false" />  
  12.     <constant name="struts.custom.i18n.resources" value="globalMessages" />  
  13.     <constant name="struts.action.extension" value="action,," />  
  14.   
  15.     <constant name="struts.convention.package.locators.basePackage"  
  16.               value="com.hsinghsu.testSSH.action" />  
  17.     <constant name="struts.convention.result.path" value="/" />  
  18.     <constant name="struts.serve.static" value="true" />  
  19.     <constant name="struts.serve.static.browserCache" value="false" />  
  20.       
  21.       
  22.     <package name="com.hsinghsu.testSSH.action.test" extends="struts-default">  
  23.         <action name="login" class="com.hsinghsu.testSSH.action.LoginAction">  
  24.             <result name="success">/WEB-INF/jsp/welcome.jsp</result>  
  25.         </action>  
  26.     </package>  
  27.       
  28. </struts>  
5、建立测试jsp页面
新建测试jsp页面welcome.jsp。
welcome.jsp文件代码如下:
[html] view plaincopy
  1. <%@ page language="java" pageEncoding="UTF-8"%>  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  3. <html>  
  4. <head>  
  5. <title>IWelcome</title>  
  6. </head>  
  7. <body>  
  8. Welcome HsingHsu  
  9. </body>  
  10. </html>  
6、配置spring
打开applicationContext.xml文件,配置spring,添加action bean。
applicationContext.xml文件代码如下:
[html] view plaincopy
  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" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="  
  7.        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  8.        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd  
  9.        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
  10.        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd  
  11.        ">  
  12.        
  13. </beans>  
7、配置Spring监听器
打开web.xml,添加Spring监听器。
web.xml文件代码如下:
[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"  
  3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
  4.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  5.     http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">  
  6.     <display-name></display-name>  
  7.       
  8.     <context-param>  
  9.         <param-name>contextConfigLocation</param-name>  
  10.         <param-value>  
  11.         classpath:applicationContext.xml  
  12.         </param-value>  
  13.     </context-param>  
  14.   
  15.     <!-- ssh 中文过滤 -->  
  16.     <filter>  
  17.         <filter-name>characterEncoding</filter-name>  
  18.         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>  
  19.         <init-param>  
  20.             <param-name>encoding</param-name>  
  21.             <param-value>utf-8</param-value>  
  22.         </init-param>  
  23.         <init-param>  
  24.             <param-name>forceEncoding</param-name>  
  25.             <param-value>true</param-value>  
  26.         </init-param>  
  27.     </filter>  
  28.     <filter-mapping>  
  29.         <filter-name>characterEncoding</filter-name>  
  30.         <url-pattern>/*</url-pattern>  
  31.     </filter-mapping>  
  32.   
  33.     <!-- 定义Struts 2的核心控制器 -->   
  34.     <filter>  
  35.         <filter-name>struts2</filter-name>  
  36.         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>  
  37.     </filter>  
  38.     <filter-mapping>  
  39.         <filter-name>struts2</filter-name>  
  40.         <url-pattern>*.action</url-pattern>  
  41.     </filter-mapping>  
  42.   
  43.     <!-- 对Spring 容器进行实例化 -->  
  44.     <listener>  
  45.         <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
  46.     </listener>  
  47.     <listener>  
  48.         <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>  
  49.     </listener>  
  50.   
  51.     <welcome-file-list>  
  52.         <welcome-file>index.html</welcome-file>  
  53.         <welcome-file>index.htm</welcome-file>  
  54.         <welcome-file>index.jsp</welcome-file>  
  55.         <welcome-file>default.html</welcome-file>  
  56.         <welcome-file>default.htm</welcome-file>  
  57.         <welcome-file>default.jsp</welcome-file>  
  58.     </welcome-file-list>  
  59.   
  60. </web-app>  
8、配置tomcat并启动,在浏览器中输入http://localhost:8686/testSSH/login.action 
   则页面会显示Welcome HsingHsu。

四、配置hibernate

1、建立数据库与数据表
本文采用oracle数据库,建立T_TEST_USER表,新建列id,name,pwd。插入一条数据,如id:1,name:hsing,pwd:hsu。

2、创建持久层实体类。
创建包com.hsinghsu.testSSH.model,创建User类,添加3个私有成员,对应数据表中3个属性,并一定要添加set和get方法。
User.java文件代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.model;  
  2.   
  3. public class User {  
  4.       
  5.     private Long id;    
  6.     private String name;    
  7.     private String pwd;  
  8.       
  9.     public Long getId() {  
  10.         return id;  
  11.     }  
  12.     public void setId(Long id) {  
  13.         this.id = id;  
  14.     }  
  15.     public String getName() {  
  16.         return name;  
  17.     }  
  18.     public void setName(String name) {  
  19.         this.name = name;  
  20.     }  
  21.     public String getPwd() {  
  22.         return pwd;  
  23.     }  
  24.     public void setPwd(String pwd) {  
  25.         this.pwd = pwd;  
  26.     }    
  27.       
  28. }  
3、添加映射文件
在com.hsinghsu.testSSH.model包下创建User.hbm.xml,作为User与数据表的映射文件。
User.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. <hibernate-mapping>  
  5.     <class name="com.hsinghsu.testSSH.model.User" table="T_TEST_USER">  
  6.         <id name="id" type="java.lang.Long">  
  7.             <column name="ID" />  
  8.             <generator class="native" />  
  9.         </id>  
  10.         <property name="name" type="java.lang.String">  
  11.             <column name="NAME" length="50">  
  12.             </column>  
  13.         </property>  
  14.         <property name="pwd" type="java.lang.String">  
  15.             <column name="PWD" length="50">  
  16.             </column>  
  17.         </property>  
  18.     </class>  
  19. </hibernate-mapping>  
4、配置spring,添加hibernate支持。
修改applicationContext.xml文件,添加hibernate支持。
applicationContext.xml文件代码如下:
[html] view plaincopy
  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" xmlns:p="http://www.springframework.org/schema/p"  
  4.     xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"  
  5.     xmlns:context="http://www.springframework.org/schema/context"  
  6.     xsi:schemaLocation="  
  7.        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd  
  8.        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd  
  9.        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd  
  10.        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd  
  11.        ">  
  12.          
  13.     <bean id="placeholderConfig"  
  14.         class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
  15.         <property name="location">  
  16.             <value>classpath:jdbc.oracle.properties</value>  
  17.         </property>  
  18.     </bean>  
  19.   
  20.     <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"  
  21.         destroy-method="close">  
  22.         <property name="jdbcUrl" value="${hibernate.connection.url}" />  
  23.         <property name="driverClass" value="${hibernate.connection.driver_class}" />  
  24.         <property name="user" value="${hibernate.connection.username}" />  
  25.         <property name="password" value="${hibernate.connection.password}" />  
  26.         <property name="acquireIncrement" value="${c3p0.acquireIncrement}" />  
  27.         <property name="initialPoolSize" value="${c3p0.initialPoolSize}" />  
  28.         <property name="minPoolSize" value="${c3p0.minPoolSize}" />  
  29.         <property name="maxPoolSize" value="${c3p0.maxPoolSize}" />  
  30.         <property name="maxStatements" value="${c3p0.maxStatements}" />  
  31.         <property name="numHelperThreads" value="${c3p0.numHelperThreads}" />  
  32.         <property name="maxIdleTime" value="${c3p0.maxIdleTime}" />  
  33.     </bean>  
  34.        
  35.     <bean id="sessionFactory"  
  36.         class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">  
  37.         <property name="dataSource">  
  38.             <ref local="dataSource" />  
  39.         </property>  
  40.             
  41.         <property name="mappingResources">  
  42.             <list>  
  43.                 <value>com/hsinghsu/testSSH/model/User.hbm.xml</value>  
  44.             </list>  
  45.         </property>  
  46.   
  47.           <property name="hibernateProperties">  
  48.             <props>  
  49.                 <prop key="hibernate.dialect">${hibernate.dialect}</prop>  
  50.                 <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>  
  51.                 <prop key="hibernate.generate_statistics">true</prop>  
  52.                 <prop key="hibernate.max_fetch_depth">${hibernate.max_fetch_depth}</prop>  
  53.                 <prop key="hibernate.jdbc.batch_versioned_data">${hibernate.jdbc.batch_versioned_data}</prop>  
  54.                 <prop key="hibernate.batch_size">${hibernate.jdbc.batch_size}</prop>  
  55.                 <prop key="hibernate.connection.release_mode">auto</prop>  
  56.                 <prop key="hibernate.autoReconnect">true</prop>  
  57.                 <prop key="hibernate.use_sql_comments">false</prop>  
  58.                 <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>  
  59.                 <prop key="hibernate.hbm2ddl.auto">update</prop>  
  60.                 <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>  
  61.             </props>  
  62.         </property>  
  63.     </bean>  
  64.       
  65.     <bean id="transactionManager"  
  66.         class="org.springframework.orm.hibernate4.HibernateTransactionManager"  
  67.         p:sessionFactory-ref="sessionFactory" />  
  68.     <tx:advice id="txAdvice" transaction-manager="transactionManager">  
  69.         <tx:attributes>  
  70.             <tx:method name="save*" propagation="REQUIRED" />  
  71.             <tx:method name="add*" propagation="REQUIRED" />  
  72.             <tx:method name="create*" propagation="REQUIRED" />  
  73.             <tx:method name="insert*" propagation="REQUIRED" />  
  74.             <tx:method name="update*" propagation="REQUIRED" />  
  75.             <tx:method name="merge*" propagation="REQUIRED" />  
  76.             <tx:method name="del*" propagation="REQUIRED" />  
  77.             <tx:method name="remove*" propagation="REQUIRED" />  
  78.             <tx:method name="put*" propagation="REQUIRED" />  
  79.             <tx:method name="use*" propagation="REQUIRED" />  
  80.             <!--hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到 -->  
  81.             <tx:method name="get*" propagation="REQUIRED" read-only="true" />  
  82.             <tx:method name="count*" propagation="REQUIRED" read-only="true" />  
  83.             <tx:method name="find*" propagation="REQUIRED" read-only="true" />  
  84.             <tx:method name="list*" propagation="REQUIRED" read-only="true" />  
  85.             <tx:method name="*" read-only="true" />  
  86.         </tx:attributes>  
  87.     </tx:advice>  
  88.       
  89.     <aop:config proxy-target-class="true">  
  90.         <aop:advisor  
  91.             pointcut="(execution(* com.hsinghsu.testSSH.dao.impl.*.*(..))) OR execution(* com.hsinghsu.testSSH.dao.impl.*.*(..))"  
  92.             advice-ref="txAdvice" />  
  93.     </aop:config>  
  94.        
  95.     <context:component-scan base-package="com.hsinghsu.testSSH">  
  96.         <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />  
  97.     </context:component-scan>  
  98.       
  99. </beans>  
  100.           
5、配置hibernate数据库连接等配置。
新建jdbc.oracle.properties文件。
jdbc.oracle.properties文件代码如下:
[plain] view plaincopy
  1. hibernate.query.substitutions yes 'Y', no 'N'  
  2. hibernate.show_sql true  
  3.   
  4. hibernate.dialect  org.hibernate.dialect.Oracle10gDialect  
  5. hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver  
  6. hibernate.connection.url jdbc:oracle:thin:@127.0.0.1:1521:ora11g  
  7. hibernate.connection.username testadm  
  8. hibernate.connection.password testadm  
  9. set the maximum depth of the outer join fetch tree  
  10.   
  11. hibernate.connection.pool_size 1  
  12. hibernate.proxool.pool_alias pool1  
  13. hibernate.format_sql false  
  14.   
  15. hibernate.use_sql_comments true  
  16.   
  17. hibernate.max_fetch_depth 1  
  18. hibernate.jdbc.batch_versioned_data true  
  19. hibernate.jdbc.batch_size 28  
  20. hibernate.jdbc.use_streams_for_binary true  
  21.   
  22. hibernate.testsql=select count(*) from dual  
  23. hibernate.active = 8  
  24. hibernate.minidle = 8  
  25. hibernate.maxidle = 8  
  26. hibernate.maxwait = -1  
  27. hibernate.checkAfterUsed=true  
  28.   
  29. c3p0.acquireIncrement=3  
  30. c3p0.idleConnectionTextPeriod=900  
  31. c3p0.minPoolSize=2  
  32. c3p0.maxPoolSize=50  
  33. c3p0.maxStatements=100  
  34. c3p0.numHelperThreads=10  
  35. c3p0.maxIdleTime=600  
  36. c3p0.initialPoolSize=3  
五、编写java代码
1、编写DAO接口
新建包com.hsinghsu.testSSH.dao,创建接口UserDao。
UserDao.java文件代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.dao;  
  2.   
  3. import com.hsinghsu.testSSH.model.User;  
  4.   
  5. public interface UserDao   
  6. {  
  7.     public User getUserByName(String name);   
  8. }  
2、编写DAO实现
新建包com.hsinghsu.testSSH.dao.impl,创建实现类UserDaoImpl。
UserDaoImpl.java文件代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.dao.impl;  
  2.   
  3. import java.util.ArrayList;  
  4. import java.util.List;  
  5.   
  6. import org.hibernate.Criteria;  
  7. import org.hibernate.Session;  
  8. import org.hibernate.SessionFactory;  
  9. import org.hibernate.criterion.Restrictions;  
  10. import org.springframework.beans.factory.annotation.Autowired;  
  11. import org.springframework.stereotype.Repository;  
  12.   
  13. import com.hsinghsu.testSSH.dao.UserDao;  
  14. import com.hsinghsu.testSSH.model.User;  
  15.   
  16. @Repository(value = "userDao")  
  17. public class UserDaoImpl implements UserDao   
  18. {  
  19.     @Autowired  
  20.     private SessionFactory sessionFactory;  
  21.       
  22.     public User getUserByName(String name)  
  23.     {  
  24.         Session session = sessionFactory.getCurrentSession();  
  25.         List<User> list = new ArrayList<User>();   
  26.           
  27.         //通过Hibernate的Criteria查询    
  28.         Criteria criteria = session.createCriteria(User.class);    
  29.         if (!(null == name && "".equals(name)))   
  30.         {    
  31.             criteria.add(Restrictions.eq("name", name));    
  32.         }    
  33.         list = criteria.list();    
  34.           
  35.         if(list != null && list.size() > 0)   
  36.         {  
  37.             return list.get(0);    
  38.         }  
  39.         return null;    
  40.     }  
  41.       
  42. }  
3、编写SERVICE接口
新建包com.hsinghsu.testSSH.service,创建接口UserService。
UserService.java文件代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.service;  
  2.   
  3. public interface UserService {  
  4.     public boolean login(String name, String password);  
  5. }  
4、编写SERVICE实现
新建包com.hsinghsu.testSSH.service.impl,创建类UserServiceImpl。
UserServiceImpl.java文件代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.service.impl;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4. import org.springframework.stereotype.Service;  
  5.   
  6. import com.hsinghsu.testSSH.dao.UserDao;  
  7. import com.hsinghsu.testSSH.model.User;  
  8. import com.hsinghsu.testSSH.service.UserService;  
  9.   
  10.   
  11. @Service(value = "userService")  
  12. public class UserServiceImpl implements UserService{  
  13.       
  14.      @Autowired  
  15.      private UserDao userDao;    
  16.        
  17.      public boolean login(String name, String password)   
  18.      {    
  19.          User user = userDao.getUserByName(name);    
  20.            
  21.          if(user!=null)  
  22.          {  
  23.              if(password.equals(user.getPwd()))  
  24.              {  
  25.                  return true;    
  26.              }  
  27.          }  
  28.          return false;    
  29.      }    
  30.        
  31. }  
5、修改action类
编辑修改LoginAction类。
LoginAction.java文件代码如下:
[java] view plaincopy
  1. package com.hsinghsu.testSSH.action;  
  2.   
  3. import org.springframework.beans.factory.annotation.Autowired;  
  4.   
  5. import com.hsinghsu.testSSH.service.UserService;  
  6.   
  7. public class LoginAction extends BaseAction {  
  8.   
  9.     /** 
  10.      *  
  11.      */  
  12.     private static final long serialVersionUID = -6144396976094110475L;  
  13.       
  14.     @Autowired  
  15.     private UserService userService;   
  16.       
  17.     private String username;    
  18.     private String password;  
  19.       
  20.     public String execute() throws Exception   
  21.     {    
  22.         System.out.println("username:"+username+" password:"+password);  
  23.         if(userService.login(username,password))    
  24.         {  
  25.             return "success";    
  26.         }  
  27.         return "error";    
  28.     }  
  29.   
  30.     public String getUsername() {  
  31.         return username;  
  32.     }  
  33.   
  34.     public void setUsername(String username) {  
  35.         this.username = username;  
  36.     }  
  37.   
  38.     public String getPassword() {  
  39.         return password;  
  40.     }  
  41.   
  42.     public void setPassword(String password) {  
  43.         this.password = password;  
  44.     }    
  45.       
  46. }  
6、新建用户登录页面。
添加login.jsp。
login.jsp文件代码如下:
[html] view plaincopy
  1. <%@ page language="java" pageEncoding="UTF-8"%>  
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  3. <html>  
  4. <head>  
  5. <title>Insert title here</title>  
  6. </head>  
  7. <body>  
  8.     <form action="login.action" method="post">    
  9.         Name:<input type="text" name="username"/><br/>    
  10.         Password:<input type="password" name="password"/><br/>    
  11.         <input type="submit" value="Submit"/>     
  12.     </form>  
  13. </body>  
  14. </html>  
7、修改welcome.jsp页面。
welcome.jsp文件代码如下:
[html] view plaincopy
  1. <%@ page language="java" pageEncoding="UTF-8"%>  
  2. <%@ taglib uri="/struts-tags" prefix="s" %>    
  3. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">  
  4. <html>  
  5. <head>  
  6. <title>IWelcome</title>  
  7. </head>  
  8. <body>  
  9. Welcome <s:property value="username"/>  
  10. </body>  
  11. </html>  
8、修改struts.xml配置文件
struts.xml文件代码如下:
[html] view plaincopy
  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2.   
  3. <!DOCTYPE struts PUBLIC  
  4.     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"  
  5.     "http://struts.apache.org/dtds/struts-2.3.dtd">  
  6.   
  7. <struts>  
  8.     <constant name="struts.objectFactory" value="spring" />  
  9.     <constant name="struts.i18n.encoding" value="UTF-8" />  
  10.     <constant name="struts.i18n.reload" value="false" />  
  11.     <constant name="struts.configuration.xml.reload" value="false" />  
  12.     <constant name="struts.custom.i18n.resources" value="globalMessages" />  
  13.     <constant name="struts.action.extension" value="action,," />  
  14.   
  15.     <constant name="struts.convention.package.locators.basePackage"  
  16.               value="com.hsinghsu.testSSH.action" />  
  17.     <constant name="struts.convention.result.path" value="/" />  
  18.   
  19.     <constant name="struts.serve.static" value="true" />  
  20.     <constant name="struts.serve.static.browserCache" value="false" />  
  21.       
  22.       
  23.     <package name="com.hsinghsu.testSSH.action.test" extends="struts-default">  
  24.         <action name="loginform">    
  25.             <result name="success">    
  26.                 /WEB-INF/jsp/login.jsp    
  27.             </result>    
  28.         </action>  
  29.         <action name="login" class="com.hsinghsu.testSSH.action.LoginAction">    
  30.             <result name="success">    
  31.                 /WEB-INF/jsp/welcome.jsp    
  32.             </result>    
  33.             <result name="error">    
  34.                 /WEB-INF/jsp/login.jsp    
  35.             </result>    
  36.         </action>    
  37.     </package>  
  38.       
  39. </struts>  
9、运行tomcat,在浏览器中输入http://localhost:8686/testSSH/loginform.action 会显示登录页面,如果成功会显示welcome+UserName。失败则会继续要求登录。


注:i.文件结构为:/src/main/resources,src/main/java,并将其添加到build path中。【Java Build Path - Add Folder】
ii./src/main/resources下文件有:struts.xml、applicationContext.xml、jdbc.oracle.properties
src/main/java下包结构为:com.hsinghsu.testSSH.model、com.hsinghsu.testSSH.dao、com.hsinghsu.testSSH.dao.impl、com.hsinghsu.testSSH.service、com.hsinghsu.testSSH.service.impl、com.hsinghsu.testSSH.action。
iii.修改web的输出目录,Java Build Path - Default output folder:testSSH/WebContent/WEB-INF/classes。
iv.添加jar包时将jar包放在WebContent/WEB-INF/lib文件夹下。
0 0
原创粉丝点击