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>

  • 相关阅读:
    nginx日志模块及日志定时切割
    Nginx学习笔记
    Nginx负载均衡和反向代理
    python--inspect模块
    Python--sys
    Docker 中 MySQL 数据的导入导出
    分布式监控-open-falcon
    《转载》脚本实现从客户端服务端HTTP请求快速分析
    《转载》日志大了,怎么办?用我的日志切割脚本吧!
    《MySQL》一次MySQL慢查询导致的故障
  • 原文地址:https://www.cnblogs.com/claricre/p/6548923.html
Copyright © 2011-2022 走看看