基于struts2,hibernate的小javaweb项目
19:47:49
这是截图
闲话不说 就开始了
web-xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- structs2的配置 --> <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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> </web-app>
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="default" extends="struts-default"> <!-- 用于页面重转 --> <action name="turnaddMessage" class="sedion.xq.action.turnAction"> <result name="success"> /WEB-INF/student/addMessage.jsp </result> </action> <action name="turndeleteMessage" class="sedion.xq.action.turnAction" method="getid"> <result name="success"> /WEB-INF/student/deleteMessage.jsp </result> </action> <action name="turnfindMessage" class="sedion.xq.action.turnAction" method="getid"> <result name="success"> /WEB-INF/student/findMessage.jsp </result> </action> <!-- look stu message --> <action name="lookMessageAction" class="sedion.xq.action.lookMessageAction"> <result name="success"> /WEB-INF/student/lookMessage.jsp </result> <result name="input">/index.jsp</result> </action> <!-- delet stu message --> <action name="deleteMessageAction" class="sedion.xq.action.deleteMessageAction"> <result name="success" type="chain"> lookMessageAction </result> <result name="input">/student/deleteMessage.jsp</result> </action> <!-- add stu message --> <action name="addMessageActon" class="sedion.xq.action.addMessageAction"> <result name="success" type="chain"> lookMessageAction </result> <result name="input">/student/deleteMessage.jsp</result> </action> <!-- find stu message --> <action name="findMessageAction" class="sedion.xq.action.findMessageAction"> <result name="success"> /WEB-INF/student/updateMessage.jsp </result> <result name="input">/student/findMessage.jsp</result> </action> <!-- update stu message --> <action name="updateMessageActon" class="sedion.xq.action.updateMessageAction"> <result name="success" type="chain"> lookMessageAction </result> <result name="input">/WEB-INF/student/updateMessage.jsp</result> </action> </package> </struts>
hibernate.cfg.xml:(申明 这里用的是SQL service 2005 若修改 这里修改 链接数据库 该数据库 名字LQQ 里面一张表格 在最后会发布)
<?xml version='1.0' encoding='UTF-8'?> <!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <!-- Generated by MyEclipse Hibernate Tools. --> <hibernate-configuration> <session-factory> <property name="connection.username">sa</property> <property name="connection.url"> jdbc:jtds:sqlserver://localhost:1433;DatabaseName=LQQ </property> <property name="dialect"> org.hibernate.dialect.SQLServerDialect </property> <!--<property name="myeclipse.connection.profile"> LoginSystem </property> --> <property name="connection.password">sa</property> <property name="connection.driver_class"> net.sourceforge.jtds.jdbc.Driver </property> <property name="show_sql">true</property> <!-- POJO 类映射配置--> <mapping resource="sedion/xq/ORM/Stuinfo.hbm.xml" /> </session-factory> </hibernate-configuration>
然后 贴出 HibernateSessionFactory.java:
package sedion.xq.hibernate; import javax.swing.JOptionPane; import org.hibernate.Session; import org.hibernate.SessionFactory; import org.hibernate.cfg.Configuration; public class HibernateSessionFactory { private static SessionFactory sessionFactory; private static Configuration configuration = new Configuration(); public HibernateSessionFactory() { } static { try { Configuration configure = configuration .configure("hibernate.cfg.xml"); System.out.println(configure); sessionFactory = configure.buildSessionFactory(); } catch (Exception e) { // TODO: handle exception System.out.println("HibernateSessionFactory wrong!!"); message("生成SessionFactory失败"+e); } } public static Session getSession() { System.out.println(sessionFactory.openSession()); return sessionFactory.openSession(); } public static void message(String mess){ int type=JOptionPane.YES_NO_CANCEL_OPTION; String title="提示消息"; JOptionPane.showMessageDialog(null,mess,title, type); } }
然后 再贴出 ORM:
Stuinfo.java:
package sedion.xq.ORM; public class Stuinfo { private String id; private String name; private String sex; private int age; private float weight; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public float getWeight() { return weight; } public void setWeight(float weight) { this.weight = weight; } }
该类的映射文件如下:
Stuinfo.hbm.xml(自然可以根据这个表格 还原数据库的表格 表名:stuinfo):
<?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="sedion.xq.ORM.Stuinfo" table="stuinfo"> <id name="id" type="string"> <column name="id" length="20" /> <generator class="assigned" /> </id> <property name="name" type="string" length="20" /> <property name="sex" type="string" length="5" /> <property name="age" type="integer" /> <property name="weight" type="float" /> </class> </hibernate-mapping>
然后 再贴出 DAO层:
StudentDao.java:
package sedion.xq.DAO; import java.util.List; import javax.swing.JOptionPane; import org.hibernate.Query; import org.hibernate.Session; import org.hibernate.Transaction; import sedion.xq.ORM.Stuinfo; import sedion.xq.hibernate.HibernateSessionFactory; import sun.swing.UIAction; public class StudentDao { private Transaction transaction; private Session session; private Query query; public StudentDao() { } // 显示 public List findAllInfo() { session = HibernateSessionFactory.getSession(); try { transaction = session.beginTransaction(); String querysString = "from Stuinfo"; query = session.createQuery(querysString); List<Stuinfo> list = query.list(); System.out.println(list); transaction.commit(); session.close(); return list; } catch (Exception e) { message("findInfo.error" + e); e.printStackTrace(); return null; } } // save message public boolean saveInfo(Stuinfo info) { try { session = HibernateSessionFactory.getSession(); transaction = session.beginTransaction(); session.save(info); transaction.commit(); session.close(); return true; } catch (Exception e) { message("saveInfo.error" + e); e.printStackTrace(); return false; } } public boolean deleteInfo(String id) { try { session = HibernateSessionFactory.getSession(); transaction = session.beginTransaction(); Stuinfo info = new Stuinfo(); info = (Stuinfo) session.get(Stuinfo.class, id); session.delete(info); transaction.commit(); session.close(); return true; } catch (Exception e) { message("deleteInfo.error" + e); e.printStackTrace(); return false; } } public List<Stuinfo> findInfo(String id) { try { session = HibernateSessionFactory.getSession(); transaction = session.beginTransaction(); query = session.createQuery("from Stuinfo stu where stu.id like?"); query.setString(0, id); List<Stuinfo> list = query.list(); System.out.println(list); transaction.commit(); session.close(); return list; } catch (Exception e) { message("deleteInfo.error" + e); e.printStackTrace(); return null; } } public boolean updateInfo(Stuinfo info,String id) { try { System.out.println(id+"didiididid"); session = HibernateSessionFactory.getSession(); transaction = session.beginTransaction(); query = session.createQuery("delete from Stuinfo stu where stu.id like?"); query.setString(0, id); query.executeUpdate(); session.saveOrUpdate(info); transaction.commit(); session.close(); return true; } catch (Exception e) { message("updateInfo.error" + e); e.printStackTrace(); return false; } } private void message(String mess) { int type = JOptionPane.YES_NO_CANCEL_OPTION; String title = "提示消息"; JOptionPane.showMessageDialog(null, mess, title, type); } }
下面是6个 jsp:
index.JSP:
<%@ page language="java" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>学生信息管理</title> </head> <body> <div align="center"> <font size=6>学生信息管理系统Struts2+ Hibernate</font> <hr color="red"/> <font > ------made by sedion.xq</font> <br /> <s:a href="lookMessageAction.action">点击进入</s:a> </div> </body> </html>
lookMessage.jsp:
<%@ page language="java" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>学生信息统一查询</title> </head> <body bgcolor="#7EC0EE"> <s:div align="center"> <hr color="red" /> <br /> <table align="center" width="80%"> <tr> <td width="25%"> 查看学生信息 </td> <td width="25%"> <s:a href="turnaddMessage.action">添加学生信息 </s:a> </td> <td width="25%"> <s:a href="turnfindMessage.action">修改学生信息 </s:a> </td> <td width="25%"> <s:a href="turndeleteMessage.action">删除学生信息 </s:a> </td> </tr> </table> <br /> <hr color="red" /> <br /> <br /> <br /> <span>你要查询的数据表的人数共有 <%=request.getSession().getAttribute("count")%>人</span> </s:div> <table align="center" width="80%" border="2" bordercolor="blue"> <tr> <th> 记录条数 </th> <th> 学号 </th> <th> 姓名 </th> <th> 性别 </th> <th> 年龄 </th> <th> 体重 </th> </tr> <s:iterator id="lsit" value="list" status="st"> <tr> <td align="center"> <s:property value="#st.count" /> </td> <td> ${id} </td> <td> ${name} </td> <td> ${sex} </td> <td> ${age} </td> <td> ${weight} </td> </tr> </s:iterator> </table> </body> </html>
updateMessage.jsp:
<%@ page language="java" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>学生信息--修改信息</title> </head> <body bgcolor="#7EC0EE"> <s:div align="center"> <hr color="red" /> <br /> <table align="center" width="80%"> <tr> <td width="25%"> <s:a href="lookMessageAction.action">查看学生信息</s:a> </td> <td width="25%"> <s:a href="turnaddMessage.action">添加学生信息</s:a> </td> <td width="25%"> <s:a>修改学生信息 </s:a> </td> <td width="25%"> <s:a href="turndeleteMessage.action">删除学生信息 </s:a> </td> </tr> </table> <br /> <hr color="red" /> <br /> <br /> <br /> <center> <font color="black" size="6">修改学生信息</font> </center> </s:div> <s:form action="updateMessageActon" method="post"> <table align="center" width="30%" border="2"> <s:iterator value="list" id="list"> <tr> <td> <s:textfield readonly="true" name="id" label="学号" maxLength="16" value="%{id}"> </s:textfield> </td> <td> <s:textfield name="name" label="姓名" value="%{name}"> </s:textfield> </td> <td> <s:select name="sex" label="性别" list="{'男','女'}" value="%{sex}" /> </td> <td> <s:textfield name="age" label="年龄" value="%{age}"> </s:textfield> </td> <td> <s:textfield name="weight" label="体重" value="%{weight}"> </s:textfield> </td> <td colspan="2"> <s:submit value="提交" align="center"></s:submit> <s:reset value="清除" align="center"></s:reset> </td> </tr> </s:iterator> </table> </s:form> <br> </body> </html>
findMessage.jsp:
<%@ page language="java" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>学生信息管理系统-查找</title> </head> <body bgcolor="#7EC0EE"> <s:div align="center"> <hr color="red" /> <br /> <table align="center" width="80%"> <tr> <td width="25%"> <a href="lookMessageAction.action">查看学生信息</a> </td> <td width="25%"> <s:a href="turnaddMessage.action">添加学生信息 </s:a> </td> <td width="25%"> <s:a>修改学生信息 </s:a> </td> <td width="25%"> <s:a href="turndeleteMessage.action">删除学生信息 </s:a> </td> </tr> </table> <br /> <hr color="red" /> <br /> <br /> <br /> <font size="5">修改学生信息</font> </s:div> <s:form action="findMessageAction" method="post"> <table align="center" width="40%" border="2" bordercolor="blue"> <tr> <td width="40%"> <s:select name="id" label="请选择要修改的学生的学号:" list="list.{id}"></s:select> </td> <td> <s:submit value="确定" align="center"></s:submit> </td> </tr> </table> </s:form> </body> </html>
deleteMessage.jsp:
<%@ page language="java" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>学生信息--删除</title> </head> <body> <body bgcolor="#7EC0EE"> <s:div align="center"> <hr color="red" /> <br /> <table align="center" width="80%"> <tr> <td width="25%"> <s:a href="lookMessageAction.action">查看学生信息</s:a> </td> <td width="25%"> <s:a href="turnaddMessage.action">添加学生信息 </s:a> </td> <td width="25%"> <s:a href="turnfindMessage.action">修改学生信息 </s:a> </td> <td width="25%"> <s:a>删除学生信息 </s:a> </td> </tr> </table> <br /> <hr color="red" /> <br /> <br /> <br /> <font size="5">删除学生信息</font> </s:div> <s:form action="deleteMessageAction" method="post"> <table align="center" width="40%" border="2" bordercolor="blue"> <tr> <td width="40%"> <s:select name="id" label="请选择要删除的学生的学号:" list="list.{id}"></s:select> </td> <td > <s:submit value="确定" align="center"></s:submit> </td> </tr> </table> </s:form> </body> </html>
addMessage.jsp:
<%@ page language="java" pageEncoding="utf-8"%> <%@ taglib prefix="s" uri="/struts-tags"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>学生信息--添加信息</title> </head> <body bgcolor="#7EC0EE"> <s:div cssClass="align"> <hr color="red" /> <br /> <table align="center" width="80%"> <tr> <td width="25%"> <s:a href="lookMessageAction.action">查看学生信息</s:a> </td> <td width="25%"> 添加学生信息 </td> <td width="25%"> <s:a href="turnfindMessage.action">修改学生信息 </s:a> </td> <td width="25%"> <s:a href="turndeleteMessage.action">删除学生信息 </s:a> </td> </tr> </table> <br /> <hr color="red" /> <br /> <br /> <br /> <center> <font color="black" size="6">添加学生信息</font> </center> </s:div> <s:form action="addMessageActon" method="post"> <table align="center" width="30%" border="2"> <tr> <td> <s:textfield name="id" label="学号" maxLength="16"> </s:textfield> </td> <td> <s:textfield name="name" label="姓名" > </s:textfield> </td> <td> <s:select name="sex" label="性别" list="{'男','女'}"/> </td> <td> <s:textfield name="age" label="年龄"> </s:textfield> </td> <td> <s:textfield name="weight" label="体重" > </s:textfield> </td> <td colspan="2" > <s:submit value="提交" align="center"></s:submit> <s:reset value="清除" align="center"></s:reset> </td> </tr> </table> </s:form> </body> </html>
下面是6个action包里面的处理:
turnAction.java:
package sedion.xq.action; import java.util.ArrayList; import java.util.List; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import sedion.xq.DAO.StudentDao; import sedion.xq.ORM.Stuinfo; public class turnAction extends ActionSupport { private List<Stuinfo> list = new ArrayList<Stuinfo>(); public List<Stuinfo> getList() { return list; } public void setList(List<Stuinfo> list) { this.list = list; } public String execute() throws Exception { return "success"; } public String getid() throws Exception { StudentDao dao = new StudentDao(); list = dao.findAllInfo(); return "success"; } }
lookMessageAction.java:
package sedion.xq.action; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; import com.sun.org.apache.bcel.internal.generic.NEW; import sedion.xq.DAO.StudentDao; import sedion.xq.ORM.Stuinfo; public class lookMessageAction extends ActionSupport{ private HttpServletRequest request; private String message = "input"; private List<Stuinfo> list=new ArrayList<Stuinfo>(); public List<Stuinfo> getList() { return list; } public void setList(List<Stuinfo> list) { this.list = list; } @SuppressWarnings("unchecked") public String execute() throws Exception { try { request = ServletActionContext.getRequest(); StudentDao dao = new StudentDao(); list = dao.findAllInfo(); request.getSession().setAttribute("count", list.size()); request.getSession().setAttribute("allInfo", list); message = "success"; } catch (Exception e) { e.printStackTrace(); } return message; } }
updateMessageAction:
package sedion.xq.action; import javax.swing.JOptionPane; import sedion.xq.DAO.StudentDao; import sedion.xq.ORM.Stuinfo; import com.opensymphony.xwork2.ActionSupport; public class updateMessageAction extends ActionSupport { private String id; private String name; private String sex; private int age; private float weight; private String message = "input"; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public float getWeight() { return weight; } public void setWeight(float weight) { this.weight = weight; } private Stuinfo Info() { Stuinfo info = new Stuinfo(); info.setId(this.getId()); info.setName(this.getName()); info.setSex(this.getSex()); info.setAge(this.getAge()); info.setWeight(this.getWeight()); return info; } public String execute() throws Exception { StudentDao dao = new StudentDao(); boolean update = dao.updateInfo(Info(),this.getId()); if (update) { message = "success"; } return message; } private void message(String mess) { int type = JOptionPane.YES_NO_CANCEL_OPTION; String title = "提示消息"; JOptionPane.showMessageDialog(null, mess, title, type); } }
findMessageAction.java:
package sedion.xq.action; import java.util.ArrayList; import java.util.List; import sedion.xq.DAO.StudentDao; import sedion.xq.ORM.Stuinfo; import com.opensymphony.xwork2.ActionSupport; public class findMessageAction extends ActionSupport { private String id; private String message; private List<Stuinfo> list = new ArrayList<Stuinfo>(); public List<Stuinfo> getList() { return list; } public void setList(List<Stuinfo> list) { this.list = list; } public String getId() { return id; } public void setId(String id) { this.id = id; } public String execute() throws Exception { try { StudentDao dao = new StudentDao(); list = dao.findInfo(this.getId()); message = "success"; } catch (Exception e) { e.printStackTrace(); } return message; } }
deleteMessageAction.java:
package sedion.xq.action; import org.apache.struts2.ServletActionContext; import sedion.xq.DAO.StudentDao; public class deleteMessageAction { private String id; private String message; public String getId() { return id; } public void setId(String id) { this.id = id; } public String execute() throws Exception { try { StudentDao dao = new StudentDao(); boolean del=dao.deleteInfo(this.getId()); if (del) { message = "success"; } } catch (Exception e) { e.printStackTrace(); } return message; } }
addMessageAction.java:
package sedion.xq.action; import java.util.List; import javax.swing.JOptionPane; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.util.finder.ClassFinder.Info; import sedion.xq.DAO.StudentDao; import sedion.xq.ORM.Stuinfo; public class addMessageAction extends ActionSupport{ /** * */ private static final long serialVersionUID = 1L; private String id; private String name; private String sex; private int age; private float weight; private String message = "input"; public String getId() { return id; } public void setId(String id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public float getWeight() { return weight; } public void setWeight(float weight) { this.weight = weight; } public String execute() throws Exception { StudentDao dao = new StudentDao(); boolean save = dao.saveInfo(Info()); if (save) { message = "success"; } return message; } private Stuinfo Info() { Stuinfo info = new Stuinfo(); info.setId(this.getId()); info.setName(this.getName()); info.setSex(this.getSex()); info.setAge(this.getAge()); info.setWeight(this.getWeight()); return info; } private void message(String mess) { int type = JOptionPane.YES_NO_CANCEL_OPTION; String title = "提示消息"; JOptionPane.showMessageDialog(null, mess, title, type); } }
终于到最后了 , 下面发下 表格的截图
谢谢 java大师我的偶像 一步一步接近