zoukankan      html  css  js  c++  java
  • 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>

  • 相关阅读:
    JavaSE 基础 第51节 定义自己的异常
    JavaSE 基础 第50节 Java中的异常链
    JavaSE 基础 第49节 手动抛出异常
    JavaSE 基础 第48节 Java中的异常声明
    JavaSE 基础 第47节 获取异常信息
    JavaSE 基础 第46节 异常的分类
    JavaSE 基础 第45节Java异常快速入门
    JavaSE 基础 第44节 引用外部类的对象
    JavaSE 基础 第43节 静态内部类
    通用爬虫
  • 原文地址:https://www.cnblogs.com/claricre/p/6548923.html
Copyright © 2011-2022 走看看