您的位置:首页 > 编程语言 > Java开发

在maven环境下 基于Struts2 spring hibernate用户登录及查询整合案例

2012-11-06 09:22 531 查看

在maven环境下 基于Struts2 spring hibernate用户登录及查询整合案例

maven环境的配置:

去网上下载apache-maven-2.2.1-bin.zip文件,然后解压至c盘根目录下

高级环境变量,配置环境如下:maven_home=C:\apache-maven-2.2.1 path=%maven_home%\bin

然后进入该项目下输入maven的编译命令:mvn eclipse:myeclipse

以下是相关代码

登陆页index.jsp,只贴了主要的代码,

<fieldset>
<legend>用户登录</legend>
<div style="color:red"><s:property value="msg"/></div>
<form action="login.action" method="post">
<s:textfield name="username" label="用户名" /><br/>
<s:password name="password" label="密 码" /><br/>
<input type="submit" value="登  录"/>
<input type="reset" value="取  消" />
</form>
</fieldset>

登陆成功页welcome.jsp

<div align="center">恭喜<s:property value="username"/> 登录成功!!</div>
<hr/>
<div align="center"><a href="userList.action">显示用户列表</a></div>
<br/>
<table width="70%" align="center" cellpadding="0" cellspacing="0" border="1">
<tr>
<th>用户编号</th>
<th>用户姓名</th>
<th>用户性别</th>
<th>用户年龄</th>
<th>出生日期</th>
<th>联系电话</th>
<th>联系地址</th>
</tr>
<s:iterator id="userDO" value="userList">
<tr>
<td align="center"><s:property value="id"/></td>
<td align="center"><s:property value="name"/></td>
<td align="center"><s:property value="gender"/></td>
<td align="center"><s:property value="age"/></td>
<td align="center"><s:property value="birthday"/></td>
<td align="center"><s:property value="phone"/></td>
<td align="center"><s:property value="address"/></td>
</tr>
</s:iterator>
</table>


web.xml配置文件

<?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">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath:spring-*.xml
</param-value>
</context-param>

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

<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>

<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

</web-app>
将struts.xml,spring-ds.xml,spring-biz.xml放置src目录下,但是使用maven创建的工程之后,有一个src/maini/resources目录,将这些文件放置该目录下即可

具体的java代码,可以新建一个源文件,名称为src/main/java,该文件放入java实现代码,比如控制层,业务逻辑层,数据访问层,实体类等

struts2的配置文件struts.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">

<struts>

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

<action name="login" class="userAction" method="validateUser">
<result name="success">/welcome.jsp</result>
<result name="input">/index.jsp</result>
</action>

<action name="userList" class="userAction" method="findUser">
<result name="success">/welcome.jsp</result>
</action>

</package>

</struts>

spring-ds.xml配置文件(数据访问层的配置及事务)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<property name="configLocation">
<value>classpath:hibernate.cfg.xml</value>
</property>
</bean>

<!-- 事务配置 -->
<bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<bean id="transactionBase" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean" lazy-init="true" abstract="true">
<!-- 配置事务管理器 -->
<property name="transactionManager" ref="transactionManager"/>
<!-- 配置事务属性-->
<property name="transactionAttributes">
<props>
<prop key="add*">PROPAGATION_REQUIRED</prop>
<prop key="delete*">PROPAGATION_REQUIRED</prop>
<prop key="update*">PROPAGATION_REQUIRED</prop>
<prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>
<prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
</props>
</property>
</bean>

<bean id="userDAO" parent="transactionBase">
<property name="target">
<bean class="com.demo.dao.impl.UserDAOImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>
</property>
</bean>
</beans>


spring-biz.xml(业务逻辑层)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<bean id="userBO" class="com.demo.bo.impl.UserBOImpl">
<property name="userDAO" ref="userDAO"/>
</bean>
</beans>

hibernate的配置,hibernate.cfg.xml

<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
<session-factory>

<property name="connection.show_sql">true</property>
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:3306/test</property>
<property name="connection.username">root</property>
<property name="connection.password">root</property>

<mapping resource="com/demo/dataobject/User.hbm.xml"/>
</session-factory>
</hibernate-configuration>

User.hbm.xml文件

<?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>

<class name="com.demo.dataobject.UserDO" table="tb_user">
<id name="id" column="id" type="java.lang.Integer">
<generator class="native"/>
</id>
<property name="name" column="name" type="java.lang.String"/>
<property name="gender" column="gender" type="java.lang.String"/>
<property name="age" column="age" type="java.lang.Integer"/>
<property name="birthday" column="birthday" type="java.sql.Date"/>
<property name="phone" column="phone" type="java.lang.String"/>
<property name="address" column="address" type="java.lang.String"/>
<property name="username" column="username" type="java.lang.String"/>
<property name="password" column="password" type="java.lang.String"/>
</class>
</hibernate-mapping>
实体类(UserDO.java)

package com.demo.dataobject;

import java.util.Date;

public class UserDO {

/** 用户编号 */
private Integer id;
/** 姓名 */
private String name;
/** 性别 */
private String gender;
/** 年龄 */
private Integer age;
/** 出生日期 */
private Date birthday;
/** 联系电话 */
private String phone;
/** 联系地址 */
private String address;
/** 用户名 */
private String username;
/** 密码 */
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 getGender() {
return gender;
}

public void setGender(String gender) {
this.gender = gender;
}

public Integer getAge() {
return age;
}

public void setAge(Integer age) {
this.age = age;
}

public Date getBirthday() {
return birthday;
}

public void setBirthday(Date birthday) {
this.birthday = birthday;
}

public String getPhone() {
return phone;
}

public void setPhone(String phone) {
this.phone = phone;
}

public String getAddress() {
return address;
}

public void setAddress(String address) {
this.address = address;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}
}

数据访问层接口IUserDAO.java

package com.demo.dao;

import java.util.List;

import com.demo.dataobject.UserDO;

public interface IUserDAO {

/***
* 根据用户名和密码查询
* @param username
* @param password
* @return
*/
public UserDO findByNameAndPass(String username,String password);

/***
* 查询所有用户信息
* @return
*/
public List<UserDO> findUserList();
}

数据访问层实现类(UserDAOImpl.java)
package com.demo.dao.impl;

import java.util.List;

import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.demo.dao.IUserDAO;
import com.demo.dataobject.UserDO;

public class UserDAOImpl extends HibernateDaoSupport implements IUserDAO {

@Override
public UserDO findByNameAndPass(String username, String password) {
String hql = "from UserDO where username=? and password=?";
List<UserDO> list = this.getHibernateTemplate().find(hql, new Object[]{username,password});
return ((list==null || list.size()==0)?null:list.get(0));
}

@Override
public List<UserDO> findUserList() {
String hql = "from UserDO";
List<UserDO> userList = this.getHibernateTemplate().find(hql);
return userList;
}
}

业务逻辑层接口(IUserBO.java)
package com.demo.bo;

import java.util.List;

import com.demo.dataobject.UserDO;

public interface IUserBO {

/***
* 根据用户名和密码校验用户
* @param username
* @param password
* @return
*/
public UserDO isLogin(String username,String password);

/***
* 列出所有用户信息
* @return
*/
public List<UserDO> findUserList();
}


业务逻辑层实现类(UserBOImpl.java)
package com.demo.bo.impl;

import java.util.List;

import com.demo.bo.IUserBO;
import com.demo.dao.IUserDAO;
import com.demo.dataobject.UserDO;

public class UserBOImpl implements IUserBO {

private IUserDAO userDAO;

@Override
public UserDO isLogin(String username, String password) {
return this.userDAO.findByNameAndPass(username, password);
}

@Override
public List<UserDO> findUserList() {
return this.userDAO.findUserList();
}

public IUserDAO getUserDAO() {
return userDAO;
}

public void setUserDAO(IUserDAO userDAO) {
this.userDAO = userDAO;
}
}

action类,UserAction.java
package com.demo.action;

import java.util.List;

import com.demo.bo.IUserBO;
import com.demo.dataobject.UserDO;
import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;

public class UserAction extends ActionSupport {

private IUserBO userBO;
private String username;
private String password;
private UserDO userDO;
private String msg;
private List<UserDO> userList;

public String validateUser() {
userDO = this.userBO.isLogin(username, password);
if(username.isEmpty() && password.isEmpty()){
msg = "用户名或密码不能为空!" ;
return Action.INPUT;
}
if(username.isEmpty()){
msg = "用户名不能为空!" ;
return Action.INPUT;
}
if(password.isEmpty()){
msg = "密码不能为空!" ;
return Action.INPUT;
}

if(userDO != null) {
ActionContext.getContext().put("username", username);
return Action.SUCCESS;
}else {
msg = "用户名或密码不正确!";
}
return Action.INPUT;
}

public String findUser() {
userList = this.userBO.findUserList();
if(userList != null) {
return Action.SUCCESS;
}
return Action.INPUT;
}

public IUserBO getUserBO() {
return userBO;
}

public void setUserBO(IUserBO userBO) {
this.userBO = userBO;
}

public String getUsername() {
return username;
}

public void setUsername(String username) {
this.username = username;
}

public String getPassword() {
return password;
}

public void setPassword(String password) {
this.password = password;
}

public UserDO getUserDO() {
return userDO;
}

public void setUserDO(UserDO userDO) {
this.userDO = userDO;
}

public String getMsg() {
return msg;
}

public void setMsg(String msg) {
this.msg = msg;
}

public List<UserDO> getUserList() {
return userList;
}

public void setUserList(List<UserDO> userList) {
this.userList = userList;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐