手动整合实现SSH项目开发01

内容简介:本文主要介绍SSH项目开发的配置以及简单登录功能的实现。

1. 新建一个Dynamic Web Project。

2.导入需要 的Jar包,此项目是Struts、Hibernate、Spring三个框架的混合开发,因此需要用到的Jar包会比较多。

  在WebContent下面的WEB_INF下的lib中导入需要的38个jar包:

antlr-2.7.7.jar
c3p0-0.9.5.2.jar
classmate-1.3.0.jar
com.springsource.com.mchange.v2.c3p0-0.9.1.2.jar
com.springsource.org.aopalliance-1.0.0.jar
com.springsource.org.apache.commons.dbcp-1.2.2.osgi.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.commons.pool-1.5.3.jar
com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar
commons-fileupload-1.3.2.jar
commons-io-2.4.jar
commons-lang3-3.4.jar
dom4j-1.6.1.jar
freemarker-2.3.23.jar
hibernate-c3p0-5.2.10.Final.jar
hibernate-commons-annotations-5.0.1.Final.jar
hibernate-core-5.2.10.Final.jar
hibernate-jpa-2.1-api-1.0.0.Final.jar
jandex-2.0.3.Final.jar
javassist-3.20.0-GA.jar
jboss-logging-3.3.0.Final.jar
jboss-transaction-api_1.2_spec-1.0.1.Final.jar
log4j-api-2.7.jar
mchange-commons-java-0.2.11.jar
mysql-connector-java-5.1.7-bin.jar
ognl-3.1.12.jar
spring-aop-4.3.6.RELEASE.jar
spring-aspects-4.3.6.RELEASE.jar
spring-beans-4.3.6.RELEASE.jar
spring-context-4.3.6.RELEASE.jar
spring-core-4.3.6.RELEASE.jar
spring-expression-4.3.6.RELEASE.jar
spring-jdbc-4.3.6.RELEASE.jar
spring-orm-4.3.6.RELEASE.jar
spring-tx-4.3.6.RELEASE.jar
spring-web-4.3.6.RELEASE.jar
struts2-core-2.5.10.1.jar
struts2-spring-plugin-2.5.10.1.jar

3. 在web.xml中配置Struts的过滤器、上下文参数以及Spring的监听

 1 <context-param>
 2     <param-name>contextConfigLocation</param-name>
 3     <param-value>classpath:applicationContext.xml</param-value>
 4 </context-param>
 5 <listener>
 6     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
 7  </listener>
 8 
 9 
10 <filter>
11     <filter-name>struts2</filter-name>
12     <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter-        class>
13 </filter>
14 
15 <filter-mapping>
16      <filter-name>struts2</filter-name>
17      <url-pattern>/*</url-pattern>
18 </filter-mapping>

4.写一个Jsp页面。作为登陆页面,页面中只需要一个表单就好,action的值与UserLoginAction中的URL对应

1 <body>
2     <form action="login" method="post">
3         username:<input name="username" /><br />
4         password:<input name="password" type="password" /><br />
5         <input type="submit" value="login">
6     </form>
7 </body>

5.在src的根目录下新建一个struts.xml文件

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

<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
    "http://struts.apache.org/dtds/struts-2.5.dtd">

<struts>
    <constant name="struts.devMode" value="true" />

    <package extends="struts-default" name="myStruts" namespace="/">
    
    <!-- 此处name与登陆form表单中的action对应,class的值与applicationContext.xml中相关出对应,不在写全路径,具体如何对应,在后面会介绍--> <action name="login" class="LoginAction"> <result>/success.jsp</result> <result name="input">/index.jsp</result> </action> </package> </struts>

6. 根据分层原理,建立相应的Dao接口,dao的实现类,service接口,service的实现类,UserBean等相关的Java类。

在IUSerDao接口中提供一个根据姓名和密码查询的方法,在UserDaoImpl的实现类中通过继承HibernateTemplate来获得Session从而实现查询功能。

通过Spring的注入对象可使用父类的getSessionFactory得到SessionFactory。

package com.whl.daoimpl;

import org.springframework.orm.hibernate5.HibernateTemplate;

import com.whl.bean.User;
import com.whl.dao.IUserDao;
public class UserDaoImpl extends HibernateTemplate implements IUserDao {
    @Override
    public User getUserByNamePass(String name, String pass) {
        
        User user = (User) getSessionFactory().openSession()
        .createQuery(String.format("from User u where u.username='%s' and u.userpass='%s'", name,pass))
        .getResultList().get(0);
        
        return user;
    }

}

IUSerServicer接口跟IUserDao接口一样,只需要有一个getUserByNamePass()方法就好。UserServicerImpl类如下:】

package com.whl.serviceimpl;

import com.whl.bean.User;
import com.whl.dao.IUserDao;
import com.whl.service.IUserService;

public class UserServiceImpl implements IUserService {
    //使用了Spring框架后通过依赖注入的方式注入对象。
    private IUserDao userDao;
    
    public void setUserDao(IUserDao userDao) {
        this.userDao = userDao;
    }

    @Override
    public User getUserByNamePass(String name, String pass) {
        return userDao.getUserByNamePass(name, pass);
    }

}

posted on 2017-06-23 19:59  注定要成为攻城狮的男人  阅读(517)  评论(0编辑  收藏  举报