SSH框架搭建(Struts2.3.12+Spring3.2.2+Hibernate4.2.0)

搭建Struts2

1.1 搭建所需jar包

序号

名称

描述

1

commons-fileupload-1.2.2.jar

文件上传组件

2

commons-io-2.0.1.jar

io包

3

commons-lang3-3.1.jar

基础工具包,封装一些常用的基础操作

4

commons-loggin-1.1.1.jar

日志组件

5

freemarker-2.3.19.jar

一个基于模板生成文本输出的通用工具

6

ognl-3.0.6.jar

对象图导航语言(jar包库)

7

strut2-core-2.3.12.jar

Struts2核心jar包

8

xwork-core-2.3.12.jar

xwork核心包

9

javassist-3.15.0-GA.jar

扩展java类和实现

1.2 整合步骤

1.2.1 创建项目

创建一个web项目,项目名称为SSH,如下所示:

 

 

1.2.2 导入jar包

项目中点击lib,复制需要的jar到lib中即完成导入,如下所示:

 

 

如果没有导入完成,右键点击项目名(SSH),选择properties-Java Build Path,点击Add Extenrnal JARs,选择项目lib中的jar包进行导入,如下所示:

 

 

1.2.3 配置web.xml

主要配置Struts2容器控制器,如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" 

xmlns="http://java.sun.com/xml/ns/j2ee" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee

http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<!-- struts2容器控制器 -->

<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>/*</url-pattern>

</filter-mapping>

<!-- 欢迎页面 -->

<welcome-file-list>

<welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

 

 

1.2.4 创建web

 

 

LoginAction主要用于实现逻辑控制控制,通过Struts的调用,处理业务之后,返回给Struts,然后显示给页面,如下所示:

LoginAction.java

package com.ssh.web;

public class LoginAction {

private String name;

private String password;

public String login() {

if (null == name && null == password) {

return "login";

} else if ("ssh".equals(name) && "12345".equals(password)) {

return "ok";

} else {

return "error";

}

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

1.2.5 创建jsp页面

login.jsp是登录页面,其他两个jsp分别写入Login Is Ok 和 Login Is Error,用于登录成功和失败的页面显示,右键点击WebRoot,创建jsp,如下所示:

login.jsp

<html>

<body>

<center><form method="post" action="login" >

UserName<input type="text" name="name" id="name"/><br/>

Password<input type="password" name="password" id="password"/><br/>

<input type="submit" value="login" /></form></center>

       </body>

       </html>

   loginOk.jsp

    <html>

    <body>

    <center><h1>Login Is Ok</h1></center>

    </body>

    </html>

       

 

loginOk.jsp

<html> 

  <body>

      <center><h1>Login Is Ok</h1></center>

  </body>

</html>

 

loginError.jsp

<html> 

  <body>

      <center><h1>Login Is Error</h1></center>

  </body>

</html>

1.2.6 配置struts.xml

这里配置页面访问访问请求的跳转和返回结果的路径,右键点击src,创建一个xml文件,如下所示:<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <package name="default" extends="struts-default">

            <action name="login" class="com.ssh.web.LoginAction" method="login">

                <result name="login">login.jsp</result>

                <result name="ok">loginOk.jsp</result>

                <result name="error">loginError.jsp</result>

               </action>

 

           </package>

   </struts>

2.整合Spring

2.1 整合所需jar包

 

 

序号

名称

描述

1

struts2-spring-plugin-2.3.12.jar

Struts2+Spring整合包

2

spring-core-3.2.2.jar

Spring核心工具包

3

spring-context-3.2.2.jar

为Spqing提供核心扩展

4

spring-context-support-3.2.2.jar

为Spqing提供核心扩展

5

spring-beans-3.2.2.jar

管理beans的工具

6

spring-expression-3.2.2.jar

表达式语言

7

spring-web-3.2.2.jar

Web应用开发包

8

spring-aspects-3.2.2.jar

提供对AspectJ的支持,以便可以方便的将面向方面的功能集成进IDE中

 

2.2 整合步骤

2.2.1导入jar包

2.2.2配置web.xml

配置Spring容器,如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<web-app version="2.4" 

xmlns="http://java.sun.com/xml/ns/j2ee" 

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">

<!-- struts2容器控制器 -->

<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>/*</url-pattern>

</filter-mapping>

<!-- spring容器配置 -->

<context-param>

         <param-name>contextConfigLocation</param-name>

         <param-value>/WEB-INF/classes/spring.xml</param-value>

</context-param>

 

<!-- spring容器监听器 -->

<listener>

    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>


<!-- 欢迎页面 -->

<welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

</welcome-file-list>

</web-app>

2.2.3 配置struts.xml

 

 

配置class类由spring代理,如下所示:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="default" extends="struts-default">

      <action name="login" class="loginAction" method="login">

             <result name="login">login.jsp</result>

             <result name="ok">loginOk.jsp</result>

             <result name="error">loginError.jsp</result>

      </action>

</package>

</struts>

2.2.4 配置spring.xml

配置action的代理,右键点击src,创建xml文件,如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<!-- 登录Action -->

<bean id="loginAction" class="com.ssh.web.LoginAction" singleton="false">

</bean>

</beans>

3整合Hibernate4

3.1整合所需jar包

 

 

1

spring-aop-3.2.2.jar

事务管理

2

spring-jdbc-3.2.2.jar

对JDBC封装

3

spring-orm-3.2.2.jar

ORM映射支持

4

spring-tx-3.2.2.jar

Spring配置事务管理

5

hibernate-core-4.2.0.CR2.jar

Hibernate的核心模块

6

hibernate-jpa-2.0-api-1.0.1.Final.jar

用来定义java持久性

7

hibernate-commons-annotations-4.0.1.Final.jar

注解

8

aopalliance-1.0.jar

AOP提供了最普通和通用的接口

9

jta-1.1.jar

事务管理

10

antlr-2.7.7.jar

执行sql查询

11

dom4j-1.6.1.jar

Xml配置和映射解释器

12

proxool-0.9.1.jar

配置连接池的工具类

13

proxool-cglib.jar

数据库代理

14

jboss-logging-3.1.0.GA.jar

日志

15

jboss-transaction-api_1.1_spec-1.0.0.Final.jar

事务处理

16

mysql-connector-java-5.1.8-bin.jar

Mysql连接驱动

 

3.2整合步驟

3.2.1导入jar包

3.2.2创建数据库ccc

在Mysql数据库中,创建一个ccc的数据库(以ccc为例,用户可自定义),创建表结构,并插入数据,如下所示:

create database ccc;

create table t_user

  (

       ID              bigint not null auto_increment,

       name            varchar(20) not null,

       password        varchar(10) not null,

    primary key (ID)

);

    insert into t_user values (1,'ssh','12345');

3.2.3 创建对象User

实体对象是根据java面向对象的实现创建的实体体现,如下所示:

 

 

User.java

package com.ssh.entity;

 

public class User {

private Integer id;

private String name;

private String password;

 

public Integer getId() {

return id;

}

public void setId(Integer id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

 

 

}

public void setPassword(String password) {

this.password = password;

}

}

3.2.4生成映射文件User.hbm.xml

映射文件主要用于实现java实体和数据库表结构的一一对应,从而hibernate可以把表转换成实体对象,如下所示:

 

 

<?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 package="com.ssh.entity">

  <class name="User" table="t_user" catalog="ccc">

    <id name="id" column="id" type="java.lang.Integer">

      <generator class="identity">

      </generator>

    </id>

    <property name="name" column="name" type="java.lang.String"></property>

    <property name="password" column="password" type="java.lang.String"></property>

  </class>

 

</hibernate-mapping>

 

3.2.5创建dao

UserDAO.java是底层数据库操作的接口,UserDAOImpl.java是接口实现,如下所示:

 

 

UserDAO.java

package com.ssh.dao;

import com.ssh.entity.User;

public interface UserDAO {

public User queryUserByName(String name);

}

 

UserDAOImpl.java

package com.ssh.dao;

import org.hibernate.Query;

import org.hibernate.SessionFactory;

import com.ssh.entity.User;

 

public class UserDAOImpl implements UserDAO {

private SessionFactory sessionFactory;

 

public User queryUserByName(String name) {

Query query = sessionFactory.getCurrentSession().createQuery(

"from User as u where u.name = ?");

query.setString(0, name);

User u = (User) query.uniqueResult();

return u;

}

public SessionFactory getSessionFactory() {

return sessionFactory;

}

 

 

public void setSessionFactory(SessionFactory sessionFactory) {

this.sessionFactory = sessionFactory;

}

}

3.2.6创建service

UserService.java是业务层的接口,UserServiceImpl.java是接口实现,接口实现用到的DAO在spring.xml里面配置,如下所示:

 

 

UserService.java

package com.ssh.ser;

public interface UserService {

public boolean login(String name,String password);

}

 

UserServiceImpl.java

package com.ssh.ser;

import com.ssh.ser.UserService;

import com.ssh.dao.UserDAO;

import com.ssh.entity.User;

 

public class UserServiceImpl implements UserService {

private UserDAO userDAO;

 

public boolean login(String name, String password) {

User u = userDAO.queryUserByName(name);

if (u == null) {

return false;

} else {

if (u.getPassword().equals(password)) {

 

return true;

} else {

return false;

}

}

}

public UserDAO getUserDAO() {

return userDAO;

}

public void setUserDAO(UserDAO userDAO) {

this.userDAO = userDAO;

}

}

3.2.7创建web

LoginAction.java主要用于控制访问,处理页面的请求,然后返回结果,这里调用服务用到的service从spring.xml里面配置,如下所示:

 

 

LoginAction.java

package com.ssh.web;

import com.opensymphony.xwork2.ActionSupport;

import com.ssh.ser.UserService;

public class LoginAction extends ActionSupport {

private String name;

private String password;

private UserService userService;

 

public String login() {

/* NAME和PASSWORD为空则返回登录页面,否则验证登录 */

if (null == name && null == password) {

return "login";

 

} else {

 

 

Boolean u = userService.login(name, password);

if (u) {

return "ok";

} else {

return "error";

}

}

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

public UserService getUserService() {

return userService;

}

public void setUserService(UserService userService) {

this.userService = userService;

}

}

3.2.8 配置jdbc.properties

用于配置数据库的相关数据,方便修改,是Hibernate的一个辅助配置文件,配置完成之后关联Hibernate即可,右键点击src,创建配置文件。如下所示:

 

 

proxool.maxConnCount=5

proxool.minConnCount=2

proxool.statistics=1m,15m,1h,1d

proxool.simultaneousBuildThrottle=5

proxool.trace=false

proxool.verbose=false

 

jdbc.driverClassName=com.mysql.jdbc.Driver

jdbc.url=jdbc:mysql://localhost:3306/ccc?useUnicode=true&characterEncoding=utf-8

jdbc.username=root

jdbc.password=root

3.2.9 配置db.xml

用于配置与数据库相关的信息,是Hibernate的主要配置文件,配置完成之后关联到spring即可,右键点击src,创建xml文件。如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<!-- 引入配置文件 -->

<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">     <property name="locations">

         <list>

            <value>classpath:jdbc.properties</value>

        </list>

    </property>

</bean> 

 

 <!--配置数据源 -->

<bean id="dataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource">

        <property name="driver" value="${jdbc.driverClassName}" />

        <property name="driverUrl" value="${jdbc.url}" />

        <property name="user" value="${jdbc.username}" />

        <property name="password" value="${jdbc.password}" />

        <property name="maximumConnectionCount" value="${proxool.maxConnCount}" />

        <property name="minimumConnectionCount" value="${proxool.minConnCount}" />

        <property name="statistics" value="${proxool.statistics}" />

        <property name="simultaneousBuildThrottle" value="${proxool.simultaneousBuildThrottle}" />

        <property name="trace" value="${proxool.trace}" />

        <property name="verbose" value="${proxool.verbose}" />

 </bean>

<!-- 会话配置 -->

<bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">

    <property name="dataSource" ref="dataSource" />

    <property name="hibernateProperties">

        <props>

            <prop key="hibernate.show_sql">true</prop>

            <prop key="hibernate.format_sql">true</prop>

            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>

         </props>

    </property>

    <property name="mappingResources">

        <list>

            <!-- 项目应用实体对象 -->

            <value>com/ssh/entity/User.hbm.xml</value>

        </list>

    </property>

</bean>

<!-- 事务管理配置 -->

<bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">   

    <property name="sessionFactory" ref="sessionFactory" />

</bean>

<!--业务类声明式事务管理配模板,需要使用事务管理业务服务对象,直接继承此Bean[即配置parent属性为此bean的id],方便统一配置--><bean id="baseTransactionProxy" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" abstract="true">

    <property name="transactionManager" ref="transactionManager" />

    <property name="transactionAttributes">

        <props>

            <!-- 指明进行事务管理业务方法名[*是通配符] -->

            <prop key="add*">PROPAGATION_REQUIRED</prop>

            <prop key="edit*">PROPAGATION_REQUIRED</prop>

            <prop key="del*">PROPAGATION_REQUIRED</prop>

            <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>

       </props>

    </property>

</bean>

<!--  Dao模板,具体实现Dao继承此bean的配置,省去各个Dao的重复配置 -->

<bean id="daoTemplate" abstract="true">

<property name="sessionFactory" ref="sessionFactory" />

</bean>

</beans>

2.2.10配置spring.xml

在之前配置的基础上把db.xml配置文件导入,实现spring和hibernate的整合,同时这里配置dao和service的参数注入,如下所示:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">

<beans>

<!-- 数据库配置 -->

<import resource="/db.xml" />

<!-- 用户dao -->

<bean id="userDAO" class="com.ssh.dao.UserDAOImpl" parent="daoTemplate" />

<!-- 登录服务[进行事务控制] -->

<bean id="userService" parent="baseTransactionProxy">

<property name="target">

<bean class="com.ssh.ser.UserServiceImpl">

<property name="userDAO" ref="userDAO"/>

</bean>

</property>

</bean>

<!-- 登录Action -->

<bean id="loginAction" class="com.ssh.web.LoginAction" singleton="false">

<property name="userService" ref="userService" />

</bean>

</beans>

3.2.11配置struts.xml

 

 

这里配置页面访问访问请求的跳转和返回结果的路径,如下所示:

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<package name="default" extends="struts-default">

    <action name="login" class="loginAction" method="login">

         <result name="login">login.jsp</result>

         <result name="ok">loginOk.jsp</result>

         <result name="error">loginError.jsp</result>

      </action>

</package>

</struts>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值