admin 管理员组

文章数量: 1087139


2023年12月23日发(作者:df怎么定义python)

SSH整合

SSH整合前应该先熟悉各个框架的单独使用,至少要了解各自的xml配置。

环境:struts-2.3.15.1,spring-3.2.4,hibernate-4.2.3,myeclipse10,JDK-1.6,Mysql

Jar包:

struts-2.3.15.1:

sturts2空项目下的所有jar包

struts2-spring-plugin-2.3.15.1

其他

spring-3.2.4:

hibernate-4.2.3:

lib-required下的所有jar包

commons-logging-1.1.3

aopalliance-1.0

1. 新建web项目

2. 以简单的登录验证为例

3. 建立,login_,login_

4. 引入struts2

(1) 配置

struts2

/*

Prepa

reAndExecuteFilter

struts2

(2) src下的配置

method="login">

/login_

/login_

(3) 测试struts2是否能够通过

5. 引入spring

(1)配置,添加listener

tLoaderListener

contextConfigLocation

classpath:

(2)配置src下的

将spring的拷贝至src下,删除里面的配置项,只保留下面内容

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/schema/beans

/schema/beans/"

>

6. 引入hibernate

(1)配置

xmlns:xsi="/2001/XMLSchema-instance"

xmlns:jee="/schema/jee"

xmlns:tx="/schema/tx"

xmlns:aop="/schema/aop"

xmlns:p="/schema/p"

xmlns:util="/schema/util"

xmlns:tool="/schema/tool"

xmlns:context="/schema/context"

xsi:schemaLocation="/schema/beans

/schema/beans/

/schema/tx

/schema/tx/

/schema/aop

/schema/aop/

/schema/jee

/schema/jee/

/schema/context

/schema/context/

/schema/util

/schema/util/

/schema/tool

/schema/tool/"

default-lazy-init="true" default-autowire="byName">

class="ManagerDataSource" >

/>

/>

class="essionFactoryBean">

true

true

key="t">ialect

key="t_session_context_class">thread

class="nagerImpl">

class="ateTransactionManager">

class="ctionInterceptor">

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

key="*">PROPAGATION_REQUIRED,-ion

class="meAutoProxyCreator">

*Manager

transactionInterceptor

scope="prototype">

7. 类图

以用户登录验证为基础的测试

类或接口

LoginAction

方法或属性

User user

UserManager userManager

String login()

int id

String username

String password

boolean exist()

SessionFactory sessionFactory

boolean exist()

String login()

UserDao userDao

String login()

e

User

UserDao

UserDaoImpl

UserManager

UserManagerImpl

流程控制

username

password

返回”success”/”error”

user

转跳login_/login_

spring

返回”success”/”error”

()

BROWER

user

返回true/false

()

Hibernate.

sql语句

返回结果

Database:

Table:user

8. 注意事项

(1) 输入内容的name为me rd时,LoginAction中应该为user生成相应的get/set方法。

(2) 通过spring注入的属性,应该生成相应的get/set方法。

(3) 如果登录时网页出现错误nested transactions not supported,一般错误出在UserDaoImpl的exist()方法的ransaction()这一行。这是因为getCurrentSession()没有获得session。先检查中事务管理配置,看看是否在UserManager中login方法或者UserDao的exist()方法上开启事务。然后检查UserDaoImpl的属性sessionFactory有没有get/set方法。检查session执行对应的数据库操作后,有没有提交事务(())。如果会报以上错误,在的hibernate配置中加入

key="t_session_context_class">thread。如果还是不能解决问题,请google或baidu一下。

(4) 当前测试的代码只是完成了用户登录验证功能,只是将hibernate的SessionFactory通过spring注入,数据库操作使用的是原生的sql语句,没有使用实体。如果需要测试,请自己完成实体类xml或者使用HibernateAnnotation。

(5) 如果操作中出现其他错误,请google或baidu一下。

9. 主要代码

(1)

用户名:

密码:

/>

(2)

xmlns="/xml/ns/javaee"

xmlns:xsi="/2001/XMLSchema-instance"

xsi:schemaLocation="/xml/ns/javaee

/xml/ns/javaee/web-app_2_">

struts2

struts2

/*

Prepa

reAndExecuteFilter

tLoaderListener

contextConfigLocation

classpath:

(3)

value="false" />

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

"/dtds/">

method="login">

/login_

/login_

(4)

xmlns:xsi="/2001/XMLSchema-instance"

xmlns:jee="/schema/jee"

xmlns:tx="/schema/tx"

xmlns:aop="/schema/aop"

xmlns:p="/schema/p"

xmlns:util="/schema/util"

xmlns:tool="/schema/tool"

xmlns:context="/schema/context"

xsi:schemaLocation="/schema/beans

/schema/beans/

/schema/tx

/schema/tx/

/schema/aop

/schema/aop/

/schema/jee

/schema/jee/

/schema/context

/schema/context/

/schema/util

/schema/util/

/schema/tool

/schema/tool/"

default-lazy-init="true" default-autowire="byName">

class="ManagerDataSource" >

/>

/>

class="essionFactoryBean">

true

true

key="t">ialect

key="t_session_context_class">thread

class="nagerImpl">

class="ateTransactionManager">

class="ctionInterceptor">

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED,readOnly

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

PROPAGATION_REQUIRED

key="*">PROPAGATION_REQUIRED,-ion

class="meAutoProxyCreator">

*Manager

transactionInterceptor

scope="prototype">

(5) LoginAction

package ;

import ;

import nager;

import Support;

public class LoginAction extends ActionSupport{

User user=new User();

UserManager userManager;

public String login(){

return (user);

}

public User getUser() {

return user;

}

public void setUser(User user) {

= user;

}

public UserManager getUserManager() {

return userManager;

}

public void setUserManager(UserManager userManager) {

nager = userManager;

}

}

(6) UserDaoImpl

package ;

import ;

import ;

import n;

import nFactory;

import o;

import ;

public class UserDaoImpl implements UserDao{

private SessionFactory sessionFactory;

public void add(User user) {

}

public void delete(User user) {

}

public void update(User user) {

}

public List queryAll() {

return null;

}

public User queryByName(String name) {

return null;

}

public User queryById(int id) {

return null;

}

public boolean exist(User user) {

Session session=rentSession();

nsaction().begin();

Query query = SQLQuery("select * from

username='"+rname()+"' and password='"+sword()+"'");

user where

}

}

List list = ();

nsaction().commit();

if(()>0){

return true;

}else{

return false;

}

public SessionFactory getSessionFactory() {

return sessionFactory;

}

public void setSessionFactory(SessionFactory sessionFactory) {

nFactory = sessionFactory;

}

(7) UserManagerImpl

package ;

import ;

import nFactory;

import o;

import ;

import nager;

public class UserManagerImpl implements UserManager{

private UserDao userDao;

public void add(User user) {

}

public void delete(User user) {

}

public void update(User user) {

}

public List queryAll() {

return null;

}

public User queryByName(String name) {

return null;

}

public User queryById(int id) {

return null;

}

/**

* 检查是否存在用户

* 数据库有匹配的用户名与密码,返回true

* 否则返回false

*/

public boolean exist(User user) {

return (user);

}

/**

* 用户登录

* 用户名和密码都匹配上时返回"success"

* 否则返回"error"

*/

public String login(User user) {

if(exist(user)){

return "success";

}else{

return "error";

}

}

}

public UserDao getUserDao() {

return userDao;

}

public void setUserDao(UserDao userDao) {

o = userDao;

}


本文标签: 配置 使用 检查 用户