注:本文使用版本: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包:
3、添加spring包:
4、添加hibernate包:
5、添加其他包:
三、配置struts
1、配置struts核心过滤器。
打开web.xml,配置struts核心过滤器和过滤器映射。
web.xml文件代码如下:
2、建立BaseAction。
新建包com.hsinghsu.testSSH.action,在其中建立类BaseAction,继承ActionSupport类。
BaseAction.java文件代码如下:
3、编写测试struts的Action。
在包com.hsinghsu.testSSH.action中建立LoginAction类,继承BaseAction,作为简单的struts测试。
LoginAction.java文件代码如下:
四、配置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文件代码如下:
3、添加映射文件
在com.hsinghsu.testSSH.model包下创建User.hbm.xml,作为User与数据表的映射文件。
User.hbm.xml文件代码如下:
一、框架的下载
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包:
- aopalliance-1.0.jar、
- freemarker-2.3.19.jar,
- ognl-3.0.5.jar,
- struts2-core-2.3.4.jar,
- struts2-spring-plugin-2.3.4.jar,
- xwork-core-2.3.4.jar,
- commons-fileupload-1.2.2.jar、
- commons-io-2.0.1.jar、
- commons-lang-2.4.jar、
- commons-lang3-3.1.jar、
- commons-logging-api-1.1.jar。
- spring-aop-3.2.1.RELEASE.jar、
- spring-aspects-3.2.1.RELEASE.jar、
- spring-beans-3.2.1.RELEASE.jar、
- spring-context-3.2.1.RELEASE.jar、
- spring-context-support-3.2.1.RELEASE.jar、
- spring-core-3.2.1.RELEASE.jar、
- spring-expression-3.2.1.RELEASE.jar、
- spring-jdbc-3.2.1.RELEASE.jar、
- spring-orm-3.2.1.RELEASE.jar、
- spring-test-3.2.1.RELEASE.jar、
- spring-tx-3.2.1.RELEASE.jar、
- spring-web-3.2.1.RELEASE.jar。
- antlr-2.7.7.jar、
- dom4j-1.6.1.jar、
- hibernate-commons-annotations-4.0.1.Final.jar、
- hibernate-core-4.1.4.Final.jar、
- hibernate-jpa-2.0-api-1.0.1.Final.jar、
- javassist-3.15.0-GA.jar、
- jboss-logging-3.1.0.GA.jar、
- jboss-transaction-api_1.1_spec-1.0.0.Final.jar、
- ehcache-core-2.4.3.jar、
- hibernate-ehcache-4.1.4.Final.jar、
- slf4j-api-1.6.1.jar、
- c3p0-0.9.1.jar
- ojdbc14.jar 【下载地址 http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html 】
- aspectjweaver.jar 【下载地址 http://search.maven.org/remotecontent?filepath=org/aspectj/aspectjweaver/1.6.12/aspectjweaver-1.6.12.jar 】
1、配置struts核心过滤器。
打开web.xml,配置struts核心过滤器和过滤器映射。
web.xml文件代码如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <display-name></display-name>
- <!-- 定义Struts 2的核心控制器 -->
- <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>*.action</url-pattern>
- </filter-mapping>
- <listener>
- <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
- </listener>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
新建包com.hsinghsu.testSSH.action,在其中建立类BaseAction,继承ActionSupport类。
BaseAction.java文件代码如下:
- package com.hsinghsu.testSSH.action;
- import com.opensymphony.xwork2.ActionSupport;
- public class BaseAction extends ActionSupport{
- /**
- *
- */
- private static final long serialVersionUID = 4565394360208096613L;
- }
在包com.hsinghsu.testSSH.action中建立LoginAction类,继承BaseAction,作为简单的struts测试。
LoginAction.java文件代码如下:
- package com.hsinghsu.testSSH.action;
- public class LoginAction extends BaseAction {
- /**
- *
- */
- private static final long serialVersionUID = -6144396976094110475L;
- public String execute() throws Exception
- {
- return "success";
- }
- }
4、配置action。
在struts.xml文件中,添加对LoginAction的配置。
struts.xml文件代码如下:
5、建立测试jsp页面
新建测试jsp页面welcome.jsp。
welcome.jsp文件代码如下:
6、配置spring
打开applicationContext.xml文件,配置spring,添加action bean。
applicationContext.xml文件代码如下:
7、配置Spring监听器
打开web.xml,添加Spring监听器。
web.xml文件代码如下:
8、配置tomcat并启动,在浏览器中输入http://localhost:8686/testSSH/login.action
则页面会显示Welcome HsingHsu。
在struts.xml文件中,添加对LoginAction的配置。
struts.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.3.dtd">
- <struts>
- <constant name="struts.objectFactory" value="spring" />
- <constant name="struts.i18n.encoding" value="UTF-8" />
- <constant name="struts.i18n.reload" value="false" />
- <constant name="struts.configuration.xml.reload" value="false" />
- <constant name="struts.custom.i18n.resources" value="globalMessages" />
- <constant name="struts.action.extension" value="action,," />
- <constant name="struts.convention.package.locators.basePackage"
- value="com.hsinghsu.testSSH.action" />
- <constant name="struts.convention.result.path" value="/" />
- <constant name="struts.serve.static" value="true" />
- <constant name="struts.serve.static.browserCache" value="false" />
- <package name="com.hsinghsu.testSSH.action.test" extends="struts-default">
- <action name="login" class="com.hsinghsu.testSSH.action.LoginAction">
- <result name="success">/WEB-INF/jsp/welcome.jsp</result>
- </action>
- </package>
- </struts>
新建测试jsp页面welcome.jsp。
welcome.jsp文件代码如下:
- <%@ page language="java" pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>IWelcome</title>
- </head>
- <body>
- Welcome HsingHsu
- </body>
- </html>
打开applicationContext.xml文件,配置spring,添加action bean。
applicationContext.xml文件代码如下:
- <?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:p="http://www.springframework.org/schema/p"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
- ">
- </beans>
打开web.xml,添加Spring监听器。
web.xml文件代码如下:
- <?xml version="1.0" encoding="UTF-8"?>
- <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
- http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
- <display-name></display-name>
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>
- classpath:applicationContext.xml
- </param-value>
- </context-param>
- <!-- ssh 中文过滤 -->
- <filter>
- <filter-name>characterEncoding</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>
- <init-param>
- <param-name>forceEncoding</param-name>
- <param-value>true</param-value>
- </init-param>
- </filter>
- <filter-mapping>
- <filter-name>characterEncoding</filter-name>
- <url-pattern>/*</url-pattern>
- </filter-mapping>
- <!-- 定义Struts 2的核心控制器 -->
- <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>*.action</url-pattern>
- </filter-mapping>
- <!-- 对Spring 容器进行实例化 -->
- <listener>
- <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
- </listener>
- <listener>
- <listener-class>org.apache.struts2.dispatcher.ng.listener.StrutsListener</listener-class>
- </listener>
- <welcome-file-list>
- <welcome-file>index.html</welcome-file>
- <welcome-file>index.htm</welcome-file>
- <welcome-file>index.jsp</welcome-file>
- <welcome-file>default.html</welcome-file>
- <welcome-file>default.htm</welcome-file>
- <welcome-file>default.jsp</welcome-file>
- </welcome-file-list>
- </web-app>
则页面会显示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文件代码如下:
- package com.hsinghsu.testSSH.model;
- public class User {
- private Long id;
- private String name;
- private String pwd;
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public String getPwd() {
- return pwd;
- }
- public void setPwd(String pwd) {
- this.pwd = pwd;
- }
- }
在com.hsinghsu.testSSH.model包下创建User.hbm.xml,作为User与数据表的映射文件。
User.hbm.xml文件代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
- "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
- <hibernate-mapping>
- <class name="com.hsinghsu.testSSH.model.User" table="T_TEST_USER">
- <id name="id" type="java.lang.Long">
- <column name="ID" />
- <generator class="native" />
- </id>
- <property name="name" type="java.lang.String">
- <column name="NAME" length="50">
- </column>
- </property>
- <property name="pwd" type="java.lang.String">
- <column name="PWD" length="50">
- </column>
- </property>
- </class>
- </hibernate-mapping>
4、配置spring,添加hibernate支持。
修改applicationContext.xml文件,添加hibernate支持。
applicationContext.xml文件代码如下:
5、配置hibernate数据库连接等配置。
新建jdbc.oracle.properties文件。
jdbc.oracle.properties文件代码如下:
五、编写java代码
1、编写DAO接口
新建包com.hsinghsu.testSSH.dao,创建接口UserDao。
UserDao.java文件代码如下:
2、编写DAO实现
新建包com.hsinghsu.testSSH.dao.impl,创建实现类UserDaoImpl。
UserDaoImpl.java文件代码如下:
3、编写SERVICE接口
新建包com.hsinghsu.testSSH.service,创建接口UserService。
UserService.java文件代码如下:
4、编写SERVICE实现
新建包com.hsinghsu.testSSH.service.impl,创建类UserServiceImpl。
UserServiceImpl.java文件代码如下:
5、修改action类
编辑修改LoginAction类。
LoginAction.java文件代码如下:
6、新建用户登录页面。
添加login.jsp。
login.jsp文件代码如下:
7、修改welcome.jsp页面。
welcome.jsp文件代码如下:
8、修改struts.xml配置文件
struts.xml文件代码如下:
修改applicationContext.xml文件,添加hibernate支持。
applicationContext.xml文件代码如下:
- <?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:p="http://www.springframework.org/schema/p"
- xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
- xmlns:context="http://www.springframework.org/schema/context"
- xsi:schemaLocation="
- http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
- http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
- http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
- http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd
- ">
- <bean id="placeholderConfig"
- class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="location">
- <value>classpath:jdbc.oracle.properties</value>
- </property>
- </bean>
- <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
- destroy-method="close">
- <property name="jdbcUrl" value="${hibernate.connection.url}" />
- <property name="driverClass" value="${hibernate.connection.driver_class}" />
- <property name="user" value="${hibernate.connection.username}" />
- <property name="password" value="${hibernate.connection.password}" />
- <property name="acquireIncrement" value="${c3p0.acquireIncrement}" />
- <property name="initialPoolSize" value="${c3p0.initialPoolSize}" />
- <property name="minPoolSize" value="${c3p0.minPoolSize}" />
- <property name="maxPoolSize" value="${c3p0.maxPoolSize}" />
- <property name="maxStatements" value="${c3p0.maxStatements}" />
- <property name="numHelperThreads" value="${c3p0.numHelperThreads}" />
- <property name="maxIdleTime" value="${c3p0.maxIdleTime}" />
- </bean>
- <bean id="sessionFactory"
- class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
- <property name="dataSource">
- <ref local="dataSource" />
- </property>
- <property name="mappingResources">
- <list>
- <value>com/hsinghsu/testSSH/model/User.hbm.xml</value>
- </list>
- </property>
- <property name="hibernateProperties">
- <props>
- <prop key="hibernate.dialect">${hibernate.dialect}</prop>
- <prop key="hibernate.show_sql">${hibernate.show_sql}</prop>
- <prop key="hibernate.generate_statistics">true</prop>
- <prop key="hibernate.max_fetch_depth">${hibernate.max_fetch_depth}</prop>
- <prop key="hibernate.jdbc.batch_versioned_data">${hibernate.jdbc.batch_versioned_data}</prop>
- <prop key="hibernate.batch_size">${hibernate.jdbc.batch_size}</prop>
- <prop key="hibernate.connection.release_mode">auto</prop>
- <prop key="hibernate.autoReconnect">true</prop>
- <prop key="hibernate.use_sql_comments">false</prop>
- <prop key="hibernate.cglib.use_reflection_optimizer">true</prop>
- <prop key="hibernate.hbm2ddl.auto">update</prop>
- <prop key="hibernate.format_sql">${hibernate.format_sql}</prop>
- </props>
- </property>
- </bean>
- <bean id="transactionManager"
- class="org.springframework.orm.hibernate4.HibernateTransactionManager"
- p:sessionFactory-ref="sessionFactory" />
- <tx:advice id="txAdvice" transaction-manager="transactionManager">
- <tx:attributes>
- <tx:method name="save*" propagation="REQUIRED" />
- <tx:method name="add*" propagation="REQUIRED" />
- <tx:method name="create*" propagation="REQUIRED" />
- <tx:method name="insert*" propagation="REQUIRED" />
- <tx:method name="update*" propagation="REQUIRED" />
- <tx:method name="merge*" propagation="REQUIRED" />
- <tx:method name="del*" propagation="REQUIRED" />
- <tx:method name="remove*" propagation="REQUIRED" />
- <tx:method name="put*" propagation="REQUIRED" />
- <tx:method name="use*" propagation="REQUIRED" />
- <!--hibernate4必须配置为开启事务 否则 getCurrentSession()获取不到 -->
- <tx:method name="get*" propagation="REQUIRED" read-only="true" />
- <tx:method name="count*" propagation="REQUIRED" read-only="true" />
- <tx:method name="find*" propagation="REQUIRED" read-only="true" />
- <tx:method name="list*" propagation="REQUIRED" read-only="true" />
- <tx:method name="*" read-only="true" />
- </tx:attributes>
- </tx:advice>
- <aop:config proxy-target-class="true">
- <aop:advisor
- pointcut="(execution(* com.hsinghsu.testSSH.dao.impl.*.*(..))) OR execution(* com.hsinghsu.testSSH.dao.impl.*.*(..))"
- advice-ref="txAdvice" />
- </aop:config>
- <context:component-scan base-package="com.hsinghsu.testSSH">
- <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller" />
- </context:component-scan>
- </beans>
新建jdbc.oracle.properties文件。
jdbc.oracle.properties文件代码如下:
- hibernate.query.substitutions yes 'Y', no 'N'
- hibernate.show_sql true
- hibernate.dialect org.hibernate.dialect.Oracle10gDialect
- hibernate.connection.driver_class oracle.jdbc.driver.OracleDriver
- hibernate.connection.url jdbc:oracle:thin:@127.0.0.1:1521:ora11g
- hibernate.connection.username testadm
- hibernate.connection.password testadm
- set the maximum depth of the outer join fetch tree
- hibernate.connection.pool_size 1
- hibernate.proxool.pool_alias pool1
- hibernate.format_sql false
- hibernate.use_sql_comments true
- hibernate.max_fetch_depth 1
- hibernate.jdbc.batch_versioned_data true
- hibernate.jdbc.batch_size 28
- hibernate.jdbc.use_streams_for_binary true
- hibernate.testsql=select count(*) from dual
- hibernate.active = 8
- hibernate.minidle = 8
- hibernate.maxidle = 8
- hibernate.maxwait = -1
- hibernate.checkAfterUsed=true
- c3p0.acquireIncrement=3
- c3p0.idleConnectionTextPeriod=900
- c3p0.minPoolSize=2
- c3p0.maxPoolSize=50
- c3p0.maxStatements=100
- c3p0.numHelperThreads=10
- c3p0.maxIdleTime=600
- c3p0.initialPoolSize=3
1、编写DAO接口
新建包com.hsinghsu.testSSH.dao,创建接口UserDao。
UserDao.java文件代码如下:
- package com.hsinghsu.testSSH.dao;
- import com.hsinghsu.testSSH.model.User;
- public interface UserDao
- {
- public User getUserByName(String name);
- }
新建包com.hsinghsu.testSSH.dao.impl,创建实现类UserDaoImpl。
UserDaoImpl.java文件代码如下:
- package com.hsinghsu.testSSH.dao.impl;
- import java.util.ArrayList;
- import java.util.List;
- import org.hibernate.Criteria;
- import org.hibernate.Session;
- import org.hibernate.SessionFactory;
- import org.hibernate.criterion.Restrictions;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Repository;
- import com.hsinghsu.testSSH.dao.UserDao;
- import com.hsinghsu.testSSH.model.User;
- @Repository(value = "userDao")
- public class UserDaoImpl implements UserDao
- {
- @Autowired
- private SessionFactory sessionFactory;
- public User getUserByName(String name)
- {
- Session session = sessionFactory.getCurrentSession();
- List<User> list = new ArrayList<User>();
- //通过Hibernate的Criteria查询
- Criteria criteria = session.createCriteria(User.class);
- if (!(null == name && "".equals(name)))
- {
- criteria.add(Restrictions.eq("name", name));
- }
- list = criteria.list();
- if(list != null && list.size() > 0)
- {
- return list.get(0);
- }
- return null;
- }
- }
新建包com.hsinghsu.testSSH.service,创建接口UserService。
UserService.java文件代码如下:
- package com.hsinghsu.testSSH.service;
- public interface UserService {
- public boolean login(String name, String password);
- }
新建包com.hsinghsu.testSSH.service.impl,创建类UserServiceImpl。
UserServiceImpl.java文件代码如下:
- package com.hsinghsu.testSSH.service.impl;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Service;
- import com.hsinghsu.testSSH.dao.UserDao;
- import com.hsinghsu.testSSH.model.User;
- import com.hsinghsu.testSSH.service.UserService;
- @Service(value = "userService")
- public class UserServiceImpl implements UserService{
- @Autowired
- private UserDao userDao;
- public boolean login(String name, String password)
- {
- User user = userDao.getUserByName(name);
- if(user!=null)
- {
- if(password.equals(user.getPwd()))
- {
- return true;
- }
- }
- return false;
- }
- }
编辑修改LoginAction类。
LoginAction.java文件代码如下:
- package com.hsinghsu.testSSH.action;
- import org.springframework.beans.factory.annotation.Autowired;
- import com.hsinghsu.testSSH.service.UserService;
- public class LoginAction extends BaseAction {
- /**
- *
- */
- private static final long serialVersionUID = -6144396976094110475L;
- @Autowired
- private UserService userService;
- private String username;
- private String password;
- public String execute() throws Exception
- {
- System.out.println("username:"+username+" password:"+password);
- if(userService.login(username,password))
- {
- return "success";
- }
- return "error";
- }
- 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;
- }
- }
添加login.jsp。
login.jsp文件代码如下:
- <%@ page language="java" pageEncoding="UTF-8"%>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>Insert title here</title>
- </head>
- <body>
- <form action="login.action" method="post">
- Name:<input type="text" name="username"/><br/>
- Password:<input type="password" name="password"/><br/>
- <input type="submit" value="Submit"/>
- </form>
- </body>
- </html>
welcome.jsp文件代码如下:
- <%@ page language="java" pageEncoding="UTF-8"%>
- <%@ taglib uri="/struts-tags" prefix="s" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
- <html>
- <head>
- <title>IWelcome</title>
- </head>
- <body>
- Welcome <s:property value="username"/>
- </body>
- </html>
struts.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.3.dtd">
- <struts>
- <constant name="struts.objectFactory" value="spring" />
- <constant name="struts.i18n.encoding" value="UTF-8" />
- <constant name="struts.i18n.reload" value="false" />
- <constant name="struts.configuration.xml.reload" value="false" />
- <constant name="struts.custom.i18n.resources" value="globalMessages" />
- <constant name="struts.action.extension" value="action,," />
- <constant name="struts.convention.package.locators.basePackage"
- value="com.hsinghsu.testSSH.action" />
- <constant name="struts.convention.result.path" value="/" />
- <constant name="struts.serve.static" value="true" />
- <constant name="struts.serve.static.browserCache" value="false" />
- <package name="com.hsinghsu.testSSH.action.test" extends="struts-default">
- <action name="loginform">
- <result name="success">
- /WEB-INF/jsp/login.jsp
- </result>
- </action>
- <action name="login" class="com.hsinghsu.testSSH.action.LoginAction">
- <result name="success">
- /WEB-INF/jsp/welcome.jsp
- </result>
- <result name="error">
- /WEB-INF/jsp/login.jsp
- </result>
- </action>
- </package>
- </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文件夹下。
注: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文件夹下。