注:本文使用版本: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包:
1、配置struts核心过滤器。
打开web.xml,配置struts核心过滤器和过滤器映射。
web.xml文件代码如下:
新建包com.hsinghsu.testSSH.action,在其中建立类BaseAction,继承ActionSupport类。
BaseAction.java文件代码如下:
在包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文件代码如下:
在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-logging-api-1.1.jar、
commons-io-2.0.1.jar、
commons-lang-2.4.jar、
commons-lang3-3.1.jar、
commons-logging-api-1.1.jar。
3、添加spring包:
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。
4、添加hibernate包:
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
5、添加其他包:
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 】
三、配置struts
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>
2、建立BaseAction。
新建包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;
}
3、编写测试struts的Action。
在包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文件代码如下:
新建测试jsp页面welcome.jsp。
welcome.jsp文件代码如下:
打开applicationContext.xml文件,配置spring,添加action bean。
applicationContext.xml文件代码如下:
打开web.xml,添加Spring监听器。
web.xml文件代码如下:
则页面会显示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>
5、建立测试jsp页面
新建测试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>
6、配置spring
打开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>
7、配置Spring监听器
打开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>
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文件代码如下:
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;
}
}
3、添加映射文件
在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文件代码如下:
新建jdbc.oracle.properties文件。
jdbc.oracle.properties文件代码如下:
1、编写DAO接口
新建包com.hsinghsu.testSSH.dao,创建接口UserDao。
UserDao.java文件代码如下:
新建包com.hsinghsu.testSSH.dao.impl,创建实现类UserDaoImpl。
UserDaoImpl.java文件代码如下:
新建包com.hsinghsu.testSSH.service,创建接口UserService。
UserService.java文件代码如下:
新建包com.hsinghsu.testSSH.service.impl,创建类UserServiceImpl。
UserServiceImpl.java文件代码如下:
编辑修改LoginAction类。
LoginAction.java文件代码如下:
添加login.jsp。
login.jsp文件代码如下:
welcome.jsp文件代码如下:
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>
5、配置hibernate数据库连接等配置。
新建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
五、编写java代码
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);
}
2、编写DAO实现
新建包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;
}
}
3、编写SERVICE接口
新建包com.hsinghsu.testSSH.service,创建接口UserService。
UserService.java文件代码如下:
package com.hsinghsu.testSSH.service;
public interface UserService {
public boolean login(String name, String password);
}
4、编写SERVICE实现
新建包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;
}
}
5、修改action类
编辑修改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;
}
}
6、新建用户登录页面。
添加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>
7、修改welcome.jsp页面。
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>
8、修改struts.xml配置文件
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文件夹下。