内容简介:本文主要介绍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的监听

 <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener> <filter>
<filter-name>struts2</filter-name>
12 <filter-class>org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter</filter- class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

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

 <body>
<form action="login" method="post">
username:<input name="username" /><br />
password:<input name="password" type="password" /><br />
<input type="submit" value="login">
</form>
</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);
} }

最新文章

  1. 浅析Java.lang.Runtime类
  2. CSSOM视图模式(CSSOM View Module)相关整理(转载)
  3. fiddler代理
  4. [LeetCode#276] Paint Fence
  5. wcf系列5天速成——第二天 binding的使用(2)
  6. 射频识别技术漫谈(18)——Mifare Desfire
  7. Redis打造URL缩短服务
  8. c#使用PortableDeviceApiLib读取便携式设备(WPD:Windows Portable Devices)信息
  9. Java中list.get(index)报错
  10. [.net 面向对象程序设计深入](18)实战设计模式——设计模式使用场景及原则
  11. [SDOI2018] 战略游戏
  12. Html 解决数字和字母不换行
  13. 分享关于搭建高性能WEB服务器的一篇文章
  14. js高级4
  15. python 数据可视化 -- 生成可控的随机数据集合
  16. Visual Studio 2017 集成Crystal Report为ASP.NET MVC呈现报表
  17. sas通过IMPORT过程读取外部文件数据
  18. css权重 vs 浏览器渲染 -- css之弊病
  19. 《ECMAScript6标准入门》第三版--读书笔记
  20. Python:闭包

热门文章

  1. angularjs ng-class
  2. ionic创建项目遇到的各种问题
  3. 使用Dotfuscator加密混淆程序以及如何脱壳反编译
  4. [js笔记整理]面向对象篇
  5. springboot(三):Spring boot中Redis的使用
  6. 关于WannaCry病毒的见解与预防,我有话说!
  7. Python标准库--Scope
  8. python selenium 元素定位(三)
  9. Hibernate笔记一:HIbernate配置-HelloWorld
  10. [HDU1020] Encoding - 加密