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

Spring 整合Struts 2 开发实例

2017-02-13 13:02 666 查看
 代码:

 1.前端页面

 login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<title>登录</title>
</head>
<body>
<s:form action="doLogin.action">
<table>
<tr>
<s:textfield name="loginName" label="用户名" />
</tr>
<tr>
<s:textfield name="loginPwd" label="密码" />
</tr>
<tr>
<s:submit value="确认" />
</tr>
</table>
</s:form>

</body>
</html>


success.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'success.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
登录成功!
</body>
</html>


error.jsp
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'success.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
登录失败!
</body>
</html>


2.配置文件
applicationContexrt.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"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:p="http://www.springframework.org/schema/p"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
<!-- 定义BasicDataSource数据源 -->
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource">
<!-- 指定连接数据库的JDBC驱动 -->
<property name="driverClassName"
value="com.mysql.jdbc.Driver">
</property>
<!-- 指定数据库所用的url-->
<property name="url"
value="jdbc:mysql://localhost:3306/bookshop">
</property>
<!-- 指定连接数据库的用户名 -->
<property name="username" value="root"></property>
<!-- 指定连接数据库的密码 -->
<property name="password" value="1234"></property>
</bean>

<!-- 定义Hibernate的SessionFactory -->
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
<!-- 将上面定义的数据源dataSource注入到LocalSessionFactoryBean类的sessionFactory属性 -->
<property name="dataSource">
<ref bean="dataSource" />
</property>
<!-- 设置Hibernate的相关属性 -->
<property name="hibernateProperties">
<props>
<!-- 设置Hibernate的数据库方言 -->
<prop key="hibernate.dialect">
org.hibernate.dialect.MySQLDialect
</prop>
</props>
</property>
<property name="mappingResources">
<list>
<value>com/ssh2test1/entity/Users.hbm.xml</value>
</list>
</property>
</bean>

<!--
定义UserDAOImpl类实例,并将已经创建LocalSessionFactoryBean的实例
sessionFactory依赖注入到UserDAOImpl类所继承的 HibernateDaoSupport
的sessionFactory属性
-->
<bean id="userDAO" class="com.ssh2test1.dao.UserDAOImpl">
<property name="sessionFactory" ref="sessionFactory"/>
</bean>

<!-- 定义UserBizImpl类实例,并给UserBizImpl类中的userDAO注入值 -->
<bean id="userBiz" class="com.ssh2test1.biz.UserBizImpl">
<property name="userDAO" ref="userDAO" />
</bean>

<!-- 部署Struts 2的负责用户管理的控制器UserManagerAction -->
<bean id="umAction" class="com.ssh2test1.action.UserManagerAction">
<property name="userBiz" ref="userBiz" />
</bean>
</beans>

struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="default" extends="struts-default">
<!-- 定义doLogin的Action,class属性使用Spring配置文件中
定义的相应的Bean实例名称-->
<action name="doLogin" class="umAction">
<!-- 定义处理结果和资源之间的映射关系 -->
<result name="error">error.jsp</result>
<result name="success">success.jsp</result>
</action>
</package>
</struts>

3.编写数据访问层
 UserDAO.java

package com.ssh2test1.dao;

import java.util.List;

import com.ssh2test1.entity.Users;

public interface UserDAO {
public List search(Users condition);
}


UserDAOImpl.java
package com.ssh2test1.dao;

import java.sql.SQLException;
import java.util.List;

import org.hibernate.Criteria;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.criterion.Restrictions;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

import com.ssh2test1.entity.Users;

public class UserDAOImpl extends HibernateDaoSupport implements UserDAO {

@Override
public List search(final Users condition) {
// TODO Auto-generated method stub
return super.getHibernateTemplate().executeFind(new HibernateCallback() {

@Override
public Object doInHibernate(Session session) throws HibernateException, SQLException {
// TODO Auto-generated method stub
Criteria c=session.createCriteria(Users.class);
if(condition!=null){
if(condition.getLoginName()!=null && !condition.getLoginName().equals("")){
c.add(Restrictions.eq("loginName", condition.getLoginName()));
}
if(condition.getLoginPwd()!=null && !condition.getLoginPwd().equals("")){
c.add(Restrictions.eq("loginPwd", condition.getLoginPwd()));
}
}
return c.list();
}
});
}

}


4.编写业务逻辑层
 UserBiz.java

package com.ssh2test1.biz;

import java.util.List;

import com.ssh2test1.entity.Users;

public interface UserBiz {
public List login(Users condition);
}


 UserBizImpl.java
package com.ssh2test1.biz;

import java.util.List;

import com.ssh2test1.dao.UserDAO;
import com.ssh2test1.entity.Users;

public class UserBizImpl implements UserBiz {

//使用UserDAO接口声明对象,并添加set方法用于依赖注入
UserDAO userDAO;

public void setUserDAO(UserDAO userDAO){
this.userDAO=userDAO;
}
public List login(Users condition) {
// TODO Auto-generated method stub
return userDAO.search(condition);
}

}


5.编写实体类及实体映射文件
  Users.java

package com.ssh2test1.entity;

import java.io.Serializable;

public class Users implements Serializable {
private Integer id;
private String loginName;
private String loginPwd;
private String name;
private String address;
private String phone;
private String mail;
private Integer userRoleId;
private Integer userStateId;
public Users() {
}
public Users(String loginName, String loginPwd, String name,
String address, String phone, String mail, Integer userRoleId,
Integer userStateId) {
this.loginName = loginName;
this.loginPwd = loginPwd;
this.name = name;
this.address = address;
this.phone = phone;
this.mail = mail;
this.userRoleId = userRoleId;
this.userStateId = userStateId;
}
public Integer getId() {
return this.id;
}

public void setId(Integer id) {
this.id = id;
}

public String getLoginName() {
return this.loginName;
}

public void setLoginName(String loginName) {
this.loginName = loginName;
}

public String getLoginPwd() {
return this.loginPwd;
}

public void setLoginPwd(String loginPwd) {
this.loginPwd = loginPwd;
}

public String getName() {
return this.name;
}

public void setName(String name) {
this.name = name;
}

public String getAddress() {
return this.address;
}

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

public String getPhone() {
return this.phone;
}

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

public String getMail() {
return this.mail;
}

public void setMail(String mail) {
this.mail = mail;
}

public Integer getUserRoleId() {
return this.userRoleId;
}

public void setUserRoleId(Integer userRoleId) {
this.userRoleId = userRoleId;
}

public Integer getUserStateId() {
return this.userStateId;
}

public void setUserStateId(Integer userStateId) {
this.userStateId = userStateId;
}
}


Users.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">
<!--
Mapping file autogenerated by MyEclipse Persistence Tools
-->
<hibernate-mapping>
<class name="com.ssh2test1.entity.Users" table="users" catalog="bookshop">
<id name="id" type="java.lang.Integer">
<column name="Id" />
<generator class="native"></generator>
</id>
<property name="loginName" type="java.lang.String">
<column name="LoginName" length="50" />
</property>
<property name="loginPwd" type="java.lang.String">
<column name="LoginPwd" length="16" />
</property>
<property name="name" type="java.lang.String">
<column name="Name" length="16" />
</property>
<property name="address" type="java.lang.String">
<column name="Address" length="16" />
</property>
<property name="phone" type="java.lang.String">
<column name="Phone" length="16" />
</property>
<property name="mail" type="java.lang.String">
<column name="Mail" length="16" />
</property>
<property name="userRoleId" type="java.lang.Integer">
<column name="UserRoleId" />
</property>
<property name="userStateId" type="java.lang.Integer">
<column name="UserStateId" />
</property>
</class>
</hibernate-mapping>


6.编写action控制类
package com.ssh2test1.action;

import java.util.List;

import com.opensymphony.xwork2.ActionSupport;
import com.ssh2test1.biz.UserBiz;
import com.ssh2test1.entity.Users;

public class UserManagerAction extends ActionSupport {
//定义用于保存用户登录表单参数的两个属性
private String loginName;
private String loginPwd;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getLoginPwd() {
return loginPwd;
}
public void setLoginPwd(String loginPwd) {
this.loginPwd = loginPwd;
}
//使用UserBiz声明一个对象,并添加set方法用于依赖注入
UserBiz userBiz;
public void setUserBiz(UserBiz userBiz) {
this.userBiz = userBiz;
}
//重载execute方法用来处理登录请求
public String execute() throws Exception {
// TODO Auto-generated method stub
Users condition=new Users();
condition.setLoginName(loginName);
condition.setLoginPwd(loginPwd);
List list=userBiz.login(condition);
if(list.size()>0){
//登录成功,转到success.jsp页面
return "success";
}else{
//登录失败,转到error.jsp页面
return "error";
}
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: