在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;
}
}
相关文章推荐
- SpringMVC+Apache Shiro+JPA(hibernate)案例教学(二)基于SpringMVC+Shiro的用户登录权限验证
- spring+hibernate+struts2 整合开发中的一个分面查询案例
- SpringMVC+Apache Shiro+JPA(hibernate)案例教学(二)基于SpringMVC+Shiro的用户登录权限验证
- SpringMVC+Apache Shiro+JPA(hibernate)案例教学(二)基于SpringMVC+Shiro的用户登录权限验证
- spring+struts+hibernate集成环境(基于maven项目搭建)
- Maven中整合Struts2、Spring3与Hibernate
- 使用maven与MyEclipse整合ssm(Spring MVC、Spring、Mybatis)三大框架并实现用户注册(环境搭载+实例源码下载)
- JSON,Struts2,Spring,Hibernate,Extjs整合应用案例
- Spring整合Struts2和Hibernate+Maven(二)之SSH的配置文件
- Spring整合Struts2和Hibernate+Maven(三)之请求的处理
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之七:Hibernate Entity的多字段组成主键处理
- SpringMVC+Apache Shiro+JPA(hibernate)案例教学(四)基于Shiro验证用户权限,且给用户授权
- SpringMVC+Apache Shiro+JPA(hibernate)案例教学(四)基于Shiro验证用户权限,且给用户授权
- 第五章 Spring3.0 、Hibernate3.3与Struts2的整合 基于Annotation
- spring+springMVC+hibernate(ssh)基于maven纯注解环境搭建
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之六:Hibernate的flush和clear
- Spring整合Struts2和Hibernate+Maven(一)之Maven项目创建
- 基于Hibernate和Struts2的用户管理系统小案例
- 基于Eclipse Maven的Spring4/Spring-MVC/Hibernate4整合之五:Hibernate的事务管理、手动回滚
- 基于maven的多框架和多视图融合技术(Struts1、Struts2、Spring、SpringMVC、Hibernate、Ibatis、MyBatis、Spring Data JPA、DWR)