用struts和hibernate结合MVC层实例

时间:2021-12-12 23:25:32

1、倒包hibernate11个包+sturts2 13个包

2、创建web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>Test27</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter> <filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>

3、创建struts

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd"> <struts>
<!-- 设置过滤的扩展名 -->
<constant name="struts.action.extension" value="do,action,,"></constant>
<!-- 定义包 -->
<package name="index" extends="struts-default">
<action name="addUser">
<result>/WEB-INF/pages/addUser.jsp</result>
</action>
<!-- 保存User -->
<action name="saveUser" class="com.hanqi.action.UserAction" method="saveUser"> <result name="fail">/WEB-INF/pages/fail.jsp</result>
<result >/WEB-INF/pages/success.jsp</result>
</action>
<!-- 查询用户 -->
<action name="selectUser" class="com.hanqi.action.UserAction" method="selectUser"> <result name="fail">/WEB-INF/pages/fail.jsp</result>
<result >/WEB-INF/pages/selectUser.jsp</result> </action>
<!-- 删除用户 -->
<action name="deleteUser" class="com.hanqi.action.UserAction" method="deleteUser">
<result name="fail">/WEB-INF/pages/fail.jsp</result>
<result type="redirectAction">selectUser</result> </action>
<!-- 修改用户 --> <action name="EditUser">
<result>/WEB-INF/pages/EditUser.jsp</result>
</action>
<action name="updateUser" class="com.hanqi.action.UserAction" method="updateUser">
<result name="fail">/WEB-INF/pages/fail.jsp</result>
<result type="redirectAction">selectUser</result>
</action> </package> </struts>

4、创建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="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.password"></property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@localhost::orcl</property>
<property name="hibernate.connection.username">test0816</property>
<property name="hibernate.default_schema">TEST0816</property>
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.show_sql">true</property>
<property name="hibernate.format_sql">true</property>
<!-- 自动建表方式 -->
<property name="hibernate.hbm2ddl.auto">update</property>
<!-- 映射文件 -->
<mapping resource="com/hanqi/entity/T_User.hbm.xml"/> </session-factory>
</hibernate-configuration>

5、创建登陆界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<a href="addUser">添加用户</a>
<br><br>
<a href="selectUser">查询用户列表</a>
</body>
</html>

6、按照MVC思想创建包和类

用struts和hibernate结合MVC层实例

用struts和hibernate结合MVC层实例

6.1创建实体类和对应的映射文件(可用反向工程)

package com.hanqi.entity;
//持久化类
//不要使用final修饰
import java.util.Date; public class T_User { private Integer user_ID;
private String name;
private Date birthday;
private double money;
private String password;
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getuser_ID() {
return user_ID;
}
public void setuser_ID(Integer user_ID) {
this.user_ID = user_ID;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public double getMoney() {
return money;
}
public void setMoney(double money) {
this.money = money;
}
public T_User(Integer user_ID, String name, Date birthday, double money) {
super();
this.user_ID = user_ID;
this.name = name;
this.birthday = birthday;
this.money = money;
} public T_User(Integer user_ID, String name) {
super();
this.user_ID = user_ID;
this.name = name;
}
//必须提供无参的构造方法
//需要用到反射
public T_User() {
super();
}
@Override
public String toString() {
return "User [user_ID=" + user_ID + ", name=" + name + ", birthday=" + birthday + ", money=" + money
+ ", password=" + password + "]";
} }

对应的映射文件:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<!-- Generated -- :: by Hibernate Tools 3.4..CR1 -->
<hibernate-mapping>
<class name="com.hanqi.entity.T_User" table="T_USER">
<id name="user_ID" type="java.lang.Integer">
<column name="USER_ID" />
<generator class="native" />
</id>
<property name="name" type="java.lang.String">
<column name="NAME" />
</property>
<property name="birthday" type="java.util.Date">
<column name="BIRTHDAY" />
</property>
<property name="money" type="double">
<column name="MONEY" />
</property>
<property name="password" type="java.lang.String">
<column name="PASSWORD" />
</property>
</class>
</hibernate-mapping>

6.2创建action类

package com.hanqi.action;
import java.util.Date;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.struts2.ServletActionContext;
import com.hanqi.entity.T_User;
import com.hanqi.service.UserService;
import com.opensymphony.xwork2.ActionContext; public class UserAction { //域模型方式
private T_User user;
private int userid;
private String name;
private String password;
private Date birthday;
private double money; public int getUserid() {
return userid;
} public void setUserid(int userid) {
this.userid = userid;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public Date getBirthday() {
return birthday;
} public void setBirthday(Date birthday) {
this.birthday = birthday;
} public double getMoney() {
return money;
} public void setMoney(double money) {
this.money = money;
} public T_User getUser() {
return user;
} public void setUser(T_User user) {
this.user = user;
}
//处理保存User的方法
public String saveUser()
{
String rtn="fail";
try{
//调用Service层(模型层,业务逻辑层)
T_User u1=new UserService().add(user);
//使用request转发到下一个页面上去
ActionContext ac=ActionContext.getContext();
Map<String, Object>mo=(Map<String, Object>)ac.get("request");
mo.put("user", u1);
rtn="success";
}
catch(Exception e)
{
e.printStackTrace();
} return rtn; }
//查询
public String selectUser()
{
String rtn="fail";
try{
//调用查询的方法
List<T_User> lu=new UserService().getAll();
//得到原生的request
HttpServletRequest hsr=ServletActionContext.getRequest();
hsr.setAttribute("userlist", lu);
rtn="success";
}
catch(Exception e)
{
e.printStackTrace();
} return rtn;
}
//删除
public String deleteUser()
{
String rtn="fail";
try{
//获取userID
//得到原生的request
HttpServletRequest hsr=ServletActionContext.getRequest(); String uid=hsr.getParameter("userID"); //执行删除
new UserService().delete(Integer.parseInt(uid)); rtn="success";
}
catch(Exception e)
{
e.printStackTrace();
} return rtn;
}
//执行修改
public String updateUser()
{
String rtn="fail"; try{
T_User user=new T_User();
user.setuser_ID(userid);
user.setPassword(password);
user.setName(name);
user.setBirthday(birthday);
user.setMoney(money);
new UserService().update(user);
rtn="success";
}
catch(Exception e)
{
e.printStackTrace();
} return rtn;
} }

6.3 创建service层

package com.hanqi.service;

import java.util.List;

import com.hanqi.DAO.UserDAO;
import com.hanqi.entity.T_User; public class UserService { //添加user的方法
public T_User add(T_User user)
{
return new UserDAO().insert(user); }
//全表查询
public List<T_User> getAll()
{
return new UserDAO().getAll();
}
//删除
public void delete(int userID)
{
new UserDAO().delete(userID);
}
//单条查询
public T_User getUser(int userID)
{
return new UserDAO().getUser(userID);
}
//执行修改
public void update(T_User user)
{
new UserDAO().updateUser(user);
} }

6.4 创建DAO层

package com.hanqi.DAO;

import java.util.ArrayList;
import java.util.List; import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.Transaction;
import org.hibernate.boot.registry.StandardServiceRegistryBuilder;
import org.hibernate.cfg.Configuration;
import org.hibernate.service.ServiceRegistry; import com.hanqi.entity.T_User; public class UserDAO { private Configuration cfg=null;
private ServiceRegistry sr=null; private SessionFactory sf=null; private Session se=null; private Transaction ts=null; public UserDAO()
{
cfg=new Configuration().configure(); sr=new StandardServiceRegistryBuilder()
.applySettings(cfg.getProperties()).build(); }
private void init()
{
sf=cfg.buildSessionFactory(sr);
se=sf.openSession();
ts=se.beginTransaction();
}
private void destory()
{
ts.commit();
se.close();
sf.close();
}
//保存 user
public T_User insert(T_User user)
{ init();
se.save(user); destory();
return user; }
//查询列表
public List<T_User> getAll()
{
init();
List<T_User> rtn=new ArrayList<>();
rtn=se.createQuery("from T_User").list();
destory();
return rtn;
}
//删除
public void delete(int userID)
{
init();
//获取对象
T_User u=(T_User)se.get(T_User.class, userID); se.delete(u);
destory();
}
//单条查询
public T_User getUser(int userID)
{
init();
T_User rtn=null;
rtn=(T_User)se.get(T_User.class, userID);
destory();
return rtn;
}
//修改单条查询内容
public T_User updateUser(T_User user)
{
init();
T_User rtn=null;
rtn=(T_User)se.get(T_User.class, user.getuser_ID());
rtn.setuser_ID(user.getuser_ID());
rtn.setName(user.getName());
rtn.setPassword(user.getPassword());
rtn.setBirthday(user.getBirthday());
rtn.setMoney(user.getMoney());
destory();
return rtn;
} }

7、跳转页面

7.1添加用户页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
添加用户
<br><br>
<form action="saveUser" method="post">
用户名:<input type="text" name="user.name"/>
<br>
密码:<input type="password" name="user.password"/>
<br>
生日:<input type="text" name="user.birthday"/>
<br>
薪酬:<input type="text" name="user.money"/>
<br>
<input type="submit" value="保存"/> </form> </body>
</html>

7.2查询页面

<%@page import="com.hanqi.entity.T_User"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body> <%
List<T_User> lu=(List<T_User>)request.getAttribute("userlist");
for(T_User u:lu)
{
out.print(u + "【<a href='EditUser?userID="+u.getuser_ID()+"'>修改</a>】【<a href='deleteUser?userID="+u.getuser_ID()+"'>删除</a>】 <br>");
} %> </body>
</html>

7.3 修改用户界面

<%@page import="com.hanqi.entity.T_User"%>
<%@page import="com.hanqi.service.UserService"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
// 接收参数
String userID = request.getParameter("userID"); T_User us=null; if (userID == null ||
userID.trim().equals(""))
{
response.getWriter().print("请正确访问"); }
else
{
us=new UserService().getUser(Integer.parseInt(userID)); }
%>
编辑银行卡信息<br><br> <form action="updateUser" method="post">
用户id号:<input type="text" name="userid" value="<%=us.getuser_ID() %>"readonly><br> 用户名:<input type="text" name="name" value="<%=us.getName() %>"/>
<br>
密码:<input type="password" name="password" value="<%=us.getPassword() %>"/>
<br>
生日:<input type="text" name="birthday" value="<%=us.getBirthday() %>"/>
<br>
薪酬:<input type="text" name="money" value="<%=us.getMoney() %>"/>
<br>
<input type="submit" value="提交"/> </form>
</body>
</html>

7.4 操作失败的跳转页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
操作失败
</body>
</html>

7.5 保存成功的跳转页面

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
操作成功
User=${user } </body>
</html>