hibernate与struts框架实现增删改查

  这里配置hibernate与struts不再过多赘述,配置搭建前文已经详细讲解,配置如下:

hibernate.hbm.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC
        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
        "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
    <session-factory>
        <property name="hibernate.connection.driver_class">com.mysql.jdbc.Driver</property>
        <property name="hibernate.connection.url">jdbc:mysql://localhost:3306/zhenzai?characterEncoding=GBK</property>
        <property name="hibernate.connection.username">root</property>
        <property name="hibernate.dialect">org.hibernate.dialect.MySQLDialect</property>
        <property name="show_sql">true</property>
        <mapping resource="com/model/News.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

com.model.News.java配置:

package com.model;
// Generated 2017-3-14 10:57:00 by Hibernate Tools 5.2.0.CR1

import java.util.Date;

/**
 * News generated by hbm2java
 */
public class News implements java.io.Serializable {

    private Integer ids;
    private String title;
    private Date time;
    private String content;

    public News() {
    }

    public News(String title, Date time, String content) {
        this.title = title;
        this.time = time;
        this.content = content;
    }

    public Integer getIds() {
        return this.ids;
    }

    public void setIds(Integer ids) {
        this.ids = ids;
    }

    public String getTitle() {
        return this.title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public Date getTime() {
        return this.time;
    }

    public void setTime(Date time) {
        this.time = time;
    }

    public String getContent() {
        return this.content;
    }

    public void setContent(String content) {
        this.content = content;
    }

}

com.model.News..hbm.xml配置:

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated 2017-3-14 10:57:01 by Hibernate Tools 5.2.0.CR1 -->
<hibernate-mapping>
    <class name="com.model.News" table="news" catalog="zhenzai" optimistic-lock="version">
        <id name="ids" type="java.lang.Integer">
            <column name="ids" />
            <generator class="identity" />
        </id>
        <property name="title" type="string">
            <column name="title" />
        </property>
        <property name="time" type="timestamp">
            <column name="time" length="19" />
        </property>
        <property name="content" type="string">
            <column name="content" />
        </property>
    </class>
</hibernate-mapping>

com.dao.HibernateUtil.java配置:

package com.dao;

import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;

import javafx.util.BuilderFactory;

public class HibernateUtil {
    private static final SessionFactory factory = BuilderFactory();
    private static final ThreadLocal<Session> lock = new ThreadLocal<Session>();
    private static SessionFactory BuilderFactory() {
        Configuration config = new Configuration().configure();
        return config.buildSessionFactory();
    }
    public static Session getsession(){
        Session session=lock.get();
        if(session==null){
            session=factory.openSession();
            lock.set(session);
        }
        return session;
    }
    public static void closeSession(){
        Session session=lock.get();
        if(session !=null){
            session.close();
            lock.set(null);
        }
    }
}

com.dao.NewsDao.java配置:

package com.dao;

import java.util.ArrayList;
import java.util.List;

import org.hibernate.Session;

import com.model.News;

public class NewsDao {
    private Session session=null;
    public NewsDao(){
        session=HibernateUtil.getsession();
    }
    public List<News> select(){
        List<News> list = new ArrayList<News>();
        try{
         list = session.createQuery("from News").getResultList();
    
        }catch(Exception e){
            e.printStackTrace();
        }
        finally{
            HibernateUtil.closeSession();
        }
        return list;
    }
    public News select(int ids){
        News list = new News();
        try{
         list = (News)session.createQuery("from News where ids=?")
                 .setParameter(0,ids)
                 .getSingleResult();
    
        }catch(Exception e){
            e.printStackTrace();
        }
        finally{
            HibernateUtil.closeSession();
        }
        return list;
    }
    public void insert(News news){
        
        try{
             session.beginTransaction();
             session.save(news);
             session.getTransaction().commit();
        
            }catch(Exception e){
                e.printStackTrace();
                session.getTransaction().rollback();
            }
            finally{
                HibernateUtil.closeSession();
            }
    }
    public void update(News news){
        try{
             session.beginTransaction();
             News n=session.get(News.class, news.getIds());
             n.setTitle(news.getTitle());
             n.setTime(news.getTime());
             n.setContent(news.getContent());
             session.update(n);
             session.getTransaction().commit();
        
            }catch(Exception e){
                e.printStackTrace();
                session.getTransaction().rollback();
            }
            finally{
                HibernateUtil.closeSession();
            }
    }
    public void delete(int ids){
        try{
             session.beginTransaction();
             News n = session.get(News.class, ids);
             session.delete(n);
             session.getTransaction().commit();
        
            }catch(Exception e){
                e.printStackTrace();
                session.getTransaction().rollback();
            }
            finally{
                HibernateUtil.closeSession();
            }
    }
    
    
}

接下来就是配置struts的内容:

web.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_9" 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">

    <display-name>Struts Blank</display-name>

    <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.html</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.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

    <constant name="struts.enable.DynamicMethodInvocation" value="false" />
    <constant name="struts.devMode" value="true" />

    <package name="default" namespace="/" extends="struts-default">
        <action name="*_*" class="com.controller.{1}Action" method="{2}">
            <result>
                {1}_{2}.jsp
            </result>
        </action>
    </package>

    

</struts>

com.controller.NewsAction.java配置:

package com.controller;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import com.dao.NewsDao;
import com.model.News;
import com.opensymphony.xwork2.ActionSupport;

public class NewsAction extends ActionSupport {
    private int ids;//创建一个ids字段,供前后端调用时使用
    private News news;//创建一个news对象,供前端调用时直接使用news.xxxx
    public int getIds() {
        return ids;
    }
    public void setIds(int ids) {
        this.ids = ids;
    }
    public News getNews() {
        return news;
    }
    public void setNews(News news) {
        this.news = news;
    }
    public String get(){//对应News_get.jsp界面
        news = new NewsDao().select(ids);
        return SUCCESS;
        
    }
    public String getAll(){//对应News_getAll.jsp界面
        List<News> list = new NewsDao().select();
        HttpServletRequest req = ServletActionContext.getRequest();//后端直接使用request搭建前后端连接
        req.setAttribute("list", list);
        return SUCCESS;
        
    }
    public String add(){//对应News_add.jsp界面
        
        return SUCCESS;
    }
    public String insert(){//对应News_insert.jsp界面
        new NewsDao().insert(news);
        return SUCCESS;
    }
    public String edit(){//对应News_edit.jsp界面
        news = new NewsDao().select(ids);
        return SUCCESS;
    }
    public String update(){//对应News_update.jsp界面
        new NewsDao().update(news);
        return SUCCESS;
    }
    public String delete(){//对应News_delete.jsp界面
        new NewsDao().delete(ids);
        return SUCCESS;
    }
}

News_getAll.jsp配置:

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!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>
<h1>新闻显示</h1>
<div>
    <c:forEach var="l" items="${list }">//获取getAll方法中request提供的list
        <div>
            <a href="News_get?ids=${l.ids }">${l.ids }&nbsp;&nbsp;${l.title }</a>&nbsp;&nbsp;<a href="News_edit?ids=${l.ids }">修改</a><a href="News_delete?ids=${l.ids }">删除</a>
        </div>
    </c:forEach>
</div>
<div>
<a href="News_add">添加</a>
</div>
</body>
</html>

News_get.jsp配置:

<%@ 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>
${news.title }<br><br>//使用的是NewsAction方法中的private News news;
${news.time }<br><br> ${news.content }<br><br> </body> </html>

News_add.jsp配置:

<%@ 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>
<h1>新闻添加</h1>
<form action="News_insert" method="post">
标题:<input type="text" name="news.title"><br>//使用的是NewsAction方法中的private News news;
时间:<input type="text" name="news.time"><br>
内容:<textarea rows="10" cols="12" name="news.content"></textarea>
<input type="submit" value="添加">
</form>
</body>
</html>

News_insert.jsp配置:

<%@ 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>

News_edit.jsp配置:

<%@ 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>
<form method="post" action="News_update">
<input type="hidden" name="news.ids" value="${news.ids }"><br>//使用的是NewsAction方法中的private News news;
标题:<input type="text" name="news.title" value="${news.title }"><br>
时间:<input type="text" name="news.time" value="${news.time }"><br>
内容:<textarea rows="10" cols="10" name="news.content" >${news.content }</textarea>
<input type="submit" value="修改">
</form>
</body>
</html>

News_update.jsp配置:

<%@ 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>

News_delete.jsp配置:

<%@ 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>

原文地址:https://www.cnblogs.com/claricre/p/6548923.html