手动搭建SSI框架
SSI框架为struts、spring、ibatis,在该框架中,使用ibatis作为数据持久层,其中ibatis使用最新版本mybatis3。
注:本文使用版本:struts-2.3.4、spring-3.2.1、mybatis-3.2.1
一、框架下载 1、Struts2:http://struts.apache.org/download 2、Spring:http://www.springsource.org/download/community 3、mybatis:https://code.google.com/p/mybatis/downloads/detail?name=mybatis-3.2.1.zip mybatis-spring: https://code.google.com/p/mybatis/downloads/list?q=label:Product-Spring
二、创建项目,添加jar包
1、创建java web项目testSSI.
2、添加struts包:
01.aopalliance-1.0.jar、 02.freemarker-2.3.19.jar, 03.ognl-3.0.5.jar, 04.struts2-core-2.3.4.jar, 05.struts2-spring-plugin-2.3.4.jar, 06.xwork-core-2.3.4.jar, 07.commons-fileupload-1.2.2.jar、 08.commons-logging-api-1.1.jar、 09.commons-io-2.0.1.jar、 10.commons-lang-2.4.jar、 11.commons-lang3-3.1.jar、 12.commons-logging-api-1.1.jar。
3、添加spring包:
view plain copy 01.spring-aop-3.2.1.RELEASE.jar、 02.spring-aspects-3.2.1.RELEASE.jar、 03.spring-beans-3.2.1.RELEASE.jar、 04.spring-context-3.2.1.RELEASE.jar、 05.spring-context-support-3.2.1.RELEASE.jar、 06.spring-core-3.2.1.RELEASE.jar、 07.spring-expression-3.2.1.RELEASE.jar、 08.spring-jdbc-3.2.1.RELEASE.jar、 09.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、添加ibatis包:
01.mybatis-3.2.1.jar 02.mybatis-spring-1.2.0.jar
5、添加其他包:
01.ojdbc14.jar 【下载地址 http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-10201-088211.html 】 02.aspectjweaver.jar 【下载地址 http://search.maven.org/remotecontent?filepath=org/aspectj/aspectjweaver/1.6.12/aspectjweaver-1.6.12.jar 】 03.javassist-3.15.0-GA.jar 04.c3p0-0.9.1.jar 【下载地址:https://code.google.com/p/aicms/downloads/detail?name=c3p0-0.9.1.jar&can=2&q=】
三、配置struts
1、配置struts核心过滤器。
打开web.xml,配置struts核心过滤器和过滤器映射。
web.xml文件代码如下:
01.<?xml version="1.0" encoding="UTF-8"?> 02.<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 03. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 04. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 05. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 06. <display-name></display-name> 07. 08. <!-- 定义Struts 2的核心控制器 --> 09. <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.testSSI.action,在其中建立类BaseAction,继承ActionSupport类。
BaseAction.java文件代码如下:
01.package com.hsinghsu.testSSI.action;
02.
03.import com.opensymphony.xwork2.ActionSupport;
04.
05.public class BaseAction extends ActionSupport{
06.
07. /**
08. *
09. */
10. private static final long serialVersionUID = 4565394360208096613L;
11.
12.}
3、编写测试struts的Action。
在包com.hsinghsu.testSSI.action中建立LoginAction类,继承BaseAction,作为简单的struts测试。
LoginAction.java文件代码如下:
01.package com.hsinghsu.testSSI.action;
02.
03.public class LoginAction extends BaseAction {
04.
05. /**
06. *
07. */
08. private static final long serialVersionUID = -6144396976094110475L;
09.
10. public String execute() throws Exception
11. {
12. return "success";
13. }
14.
15.}
4、配置action。
在struts.xml文件中,添加对LoginAction的配置。
struts.xml文件代码如下:
01.<?xml version="1.0" encoding="UTF-8" ?> 02. 03.<!DOCTYPE struts PUBLIC 04. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 05. "http://struts.apache.org/dtds/struts-2.3.dtd"> 06. 07.<struts> 08. <constant name="struts.objectFactory" value="spring" /> 09. <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.testSSI.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.testSSI.action.test" extends="struts-default"> 23. <action name="login" class="com.hsinghsu.testSSI.action.LoginAction"> 24. <result name="success">/jsp/welcome.jsp</result> 25. </action> 26. </package> 27. 28.</struts>
5、建立测试jsp页面
新建测试jsp页面welcome.jsp。
welcome.jsp文件代码如下:
01.<%@ page language="java" pageEncoding="UTF-8"%> 02.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 03.<html> 04.<head> 05.<title>IWelcome</title> 06.</head> 07.<body> 08.Welcome HsingHsu 09.</body> 10.</html>
6、配置spring
打开applicationContext.xml文件,配置spring,添加action bean。
applicationContext.xml文件代码如下:
01.<?xml version="1.0" encoding="UTF-8"?> 02.<beans xmlns="http://www.springframework.org/schema/beans" 03. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 04. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 05. xmlns:context="http://www.springframework.org/schema/context" 06. xsi:schemaLocation=" 07. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 08. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 09. 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="loginAction" class="com.hsinghsu.testSSI.action.LoginAction"/> 14. 15.</beans>
7、配置Spring监听器
打开web.xml,添加Spring监听器。
web.xml文件代码如下:
01.<?xml version="1.0" encoding="UTF-8"?> 02.<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" 03. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 04. xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 05. http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> 06. <display-name></display-name> 07. 08. <context-param> 09. <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/testSSI/login.action
则页面会显示Welcome HsingHsu。
四、配置ibatis
1、建立数据库与数据表 本文采用oracle数据库,建立T_TEST_USER表,新建列ID,NAME,PWD,AGE,SEX。插入一条数据,如id:1,name:hsing,pwd:hsu。 2、配置ibatis数据库连接等配置。新建jdbc.oracle.properties文件。 jdbc.oracle.properties文件代码如下:
01.ibatis.connection.driver_class oracle.jdbc.driver.OracleDriver 02.ibatis.connection.url jdbc:oracle:thin:@10.127.58.1:1521:ora11g 03.ibatis.connection.username adm 04.ibatis.connection.password adm 05. 06.c3p0.acquireIncrement=3 07.c3p0.idleConnectionTextPeriod=900 08.c3p0.minPoolSize=2 09.c3p0.maxPoolSize=50 10.c3p0.maxStatements=100 11.c3p0.numHelperThreads=10 12.c3p0.maxIdleTime=600 13.c3p0.initialPoolSize=3
3、配置spring,添加ibatis支持。
修改applicationContext.xml文件,添加ibatis支持。
applicationContext.xml文件代码如下:
01.<?xml version="1.0" encoding="UTF-8"?>
02.<beans xmlns="http://www.springframework.org/schema/beans"
03. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
04. xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
05. xmlns:context="http://www.springframework.org/schema/context"
06. xsi:schemaLocation="
07. http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
08. http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd
09. 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="${ibatis.connection.url}" />
23. <property name="driverClass" value="${ibatis.connection.driver_class}" />
24. <property name="user" value="${ibatis.connection.username}" />
25. <property name="password" value="${ibatis.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="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
36. <property name="configLocation" value="classpath:sqlMapConfigMybatis.xml" />
37. <property name="dataSource" ref="dataSource" />
38. </bean>
39.
40. <bean id="abstractDao" abstract="true">
41. <property name="sqlSessionFactory" ref="sqlSessionFactory" />
42. </bean>
43.
44. <bean id="userDao"
45. class="com.hsinghsu.testSSI.dao.impl.UserDaoImpl"
46. parent="abstractDao" />
47.
48. <context:component-scan base-package="com.hsinghsu.testSSI">
49. <context:exclude-filter type="annotation"
50. expression="org.springframework.stereotype.Controller" />
51. </context:component-scan>
52.
53.</beans>
4、配置ibatis映射文件
新建sqlMapConfigMybatis.xml,添加ibatis映射文件
代码如下:
01.<?xml version="1.0" encoding="UTF-8"?> 02.<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" 03. "http://mybatis.org/dtd/mybatis-3-config.dtd"> 04. 05.<configuration> 06. <mappers> 07. <!-- 配置sql语句文件 --> 08. <mapper resource="com/hsinghsu/testSSI/data/User.xml" /> 09. </mappers> 10.</configuration>
5、创建持久层实体类。
创建包com.hsinghsu.testSSI.model,创建User类,添加5个私有成员,对应数据表中5个属性,并一定要添加set和get方法。
User.java文件代码如下:
01.package com.hsinghsu.testSSI.model;
02.
03.public class User {
04.
05. private Long id;
06. private String name;
07. private String pwd;
08. private Long age;
09. private Long sex;
10.
11. public Long getId() {
12. return id;
13. }
14.
15. public void setId(Long id) {
16. this.id = id;
17. }
18.
19. public String getName() {
20. return name;
21. }
22.
23. public void setName(String name) {
24. this.name = name;
25. }
26.
27. public String getPwd() {
28. return pwd;
29. }
30.
31. public void setPwd(String pwd) {
32. this.pwd = pwd;
33. }
34.
35. public Long getAge() {
36. return age;
37. }
38.
39. public void setAge(Long age) {
40. this.age = age;
41. }
42.
43. public Long getSex() {
44. return sex;
45. }
46.
47. public void setSex(Long sex) {
48. this.sex = sex;
49. }
50.
51.}
6、配置User映射文件
创建包com.hsinghsu.testSSI.data。该包主要放置对应类的映射文件。
新建User.xml,添加其sql的映射
代码如下:
01.<?xml version="1.0" encoding="UTF-8"?>
02.<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
03. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
04.
05.<mapper namespace="UserMapper">
06.
07. <!-- select 语句,传参一个,返回User对象 。注:select id as id,name as name,pwd as pwd
08. 的as后面的名称要与User类中属性名称要一一对应 -->
09. <select id="getUserByName" parameterType="String"
10. resultType="com.hsinghsu.testSSI.model.User">
11. select
12. id as id,name as name,pwd as pwd
13. from T_TEST_USER
14. WHERE NAME = #{name}
15. </select>
16.
17. <insert id="insertUser" parameterType="com.hsinghsu.testSSI.model.User">
18. insert into
19. T_TEST_USER(ID,NAME,PWD,AGE,SEX)
20. values(#{id},#{name},#{pwd},#{age},#{sex})
21. </insert>
22.
23.</mapper>
五、编写java代码
1、编写DAO接口
新建包com.hsinghsu.testSSI.dao,创建接口UserDao。
UserDao.java文件代码如下:
01.package com.hsinghsu.testSSI.dao;
02.
03.import com.hsinghsu.testSSI.model.User;
04.
05.public interface UserDao {
06.
07. public User getUserByName(String name);
08.
09.}
2、编写DAO实现
新建包com.hsinghsu.testSSI.dao.impl,创建实现类UserDaoImpl。
UserDaoImpl.java文件代码如下:
01.package com.hsinghsu.testSSI.dao.impl;
02.
03.import java.util.ArrayList;
04.import java.util.HashMap;
05.import java.util.List;
06.import java.util.Map;
07.
08.import org.mybatis.spring.support.SqlSessionDaoSupport;
09.import org.springframework.stereotype.Repository;
10.
11.import com.hsinghsu.testSSI.dao.UserDao;
12.import com.hsinghsu.testSSI.model.User;
13.
14.@Repository(value = "userDao")
15.public class UserDaoImpl extends SqlSessionDaoSupport implements UserDao {
16.
17. @Override
18. public User getUserByName(String name) {
19.
20. User user = new User();
21.
22. // select语句,传入一个参数,返回User对象 -------------------------------------------------------------------------
23. user = getSqlSession().selectOne("UserMapper.getUserByName", name);// select语句,传入一个参数,返回User对象
24.
25. //insert语句,传入一个对象 -------------------------------------------------------------------------------------
26. User oneUser = new User();
27. oneUser.setId(Long.parseLong("6"));
28. oneUser.setName("go07");
29. oneUser.setPwd("pesd07");
30. oneUser.setAge(Long.parseLong("25"));
31. oneUser.setSex(Long.parseLong("1"));
32. //int result = getSqlSession().insert("UserMapper.insertUser",oneUser);//insert语句,传入一个对象
33. //System.out.println("insert result:"+result);
34.
35.
36. return user;
37. }
38.
39.}
3、修改action类
编辑修改LoginAction类。
LoginAction.java文件代码如下:
01.package com.hsinghsu.testSSI.action;
02.
03.import org.springframework.beans.factory.annotation.Autowired;
04.
05.import com.hsinghsu.testSSI.dao.UserDao;
06.import com.hsinghsu.testSSI.model.User;
07.
08.public class LoginAction extends BaseAction {
09.
10. /**
11. *
12. */
13. private static final long serialVersionUID = -439437585357651788L;
14.
15. @Autowired
16. private UserDao userDao;
17.
18. private User user;
19.
20. private String username;
21. private String password;
22.
23. public String execute() throws Exception {
24. user = userDao.getUserByName(username);
25. if (user != null) {
26. if (user.getPwd().equals(password)) {
27. return SUCCESS;
28. }
29. }
30. return ERROR;
31. }
32.
33. public String getUsername() {
34. return username;
35. }
36.
37. public void setUsername(String username) {
38. this.username = username;
39. }
40.
41. public String getPassword() {
42. return password;
43. }
44.
45. public void setPassword(String password) {
46. this.password = password;
47. }
48.
49.}
4、新建用户登录页面。
添加login.jsp。
login.jsp文件代码如下:
01.<%@ page language="java" pageEncoding="UTF-8"%> 02.<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 03.<html> 04.<head> 05.<title>Insert title here</title> 06.</head> 07.<body> 08. <form action="mylogin.action" method="post"> 09. Username:<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>
5、修改struts.xml配置文件
struts.xml文件代码如下:
01.<?xml version="1.0" encoding="UTF-8" ?> 02. 03.<!DOCTYPE struts PUBLIC 04. "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 05. "http://struts.apache.org/dtds/struts-2.3.dtd"> 06. 07.<struts> 08. <constant name="struts.objectFactory" value="spring" /> 09. <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.testSSI.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.testSSI.action.test" extends="struts-default"> 23. <action name="login" class="com.hsinghsu.testSSI.action.LoginAction"> 24. <result name="success">/jsp/welcome.jsp</result> 25. </action> 26. 27. <action name="mylogin" class="com.hsinghsu.testSSI.action.LoginAction"> 28. <result name="success">/jsp/welcome.jsp</result> 29. <result name="error">/jsp/login.jsp</result> 30. </action> 31. </package> 32. 33.</struts>
6、运行tomcat,在浏览器中输入http://localhost:8686/testSSI/jsp/login.jsp 会显示登录页面,如果成功会显示welcome 。失败则会继续要求登录。
注: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、sqlMapConfigMybatis.xml
src/main/java下包结构为:com.hsinghsu.testSSI.model、com.hsinghsu.testSSI.dao、com.hsinghsu.testSSI.dao.impl、com.hsinghsu.testSSI.data、com.hsinghsu.testSSI.action。
iii.修改web的输出目录,Java Build Path - Default output folder:testSSI/WebContent/WEB-INF/classes。
iv.添加jar包时将jar包放在WebContent/WEB-INF/lib文件夹下。
浙公网安备 33010602011771号