在公司实习因为对于框架不是很了解,现在所要做的就是对于基本框架的使用,因为公司原有的系统都是基于ssh开发的,都是较为老的系统,而大部分网上的教程都是用eclipse来进行开发,但是要利用好新工具就比如说idea,这个用来开发可能还是快一点吧。所以自己这次就想把刚学会的东西写一下,希望能写的具体详细。也能给别人一点小小的帮助

第一步。new-file 选择好strusts2和hibernate。之后命名好后随便选择

之后的相应文件目录结构

下面主要是写的是自己对于仅仅用struts2和hibernate的理解。

hibernate是用来操作数据库的,我现在学的里面知道session里面有具体的对于数据库进行操作的方法,也有HQL之类的语句进行操作,用了hibernate框架之后能够更简单方便的去对于数据库进行操作

而struts2就我个人而言觉得可能是类似于MVC里面的C,更多的是去配置,从而去具体的实现相应的功能,比如给相应的action配置相应的东西才能得到跳转相应的页面

首先是写具体的pojo类,也就是实体类,就是要把这个类里面的属性给完成,从而去实现你想从数据库里面调用的具体值,再来实现相应的增删改查。

比如我这个例子里面 写的是Product类 里面的是产品的属性,id name price;

package com.xfc.pojo;
public class Product {private int id;private String name;private float price;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public float getPrice() {return price;}public void setPrice(float price) {this.price = price;}}

然后在相应的pojo类下写Product.hbm.xml 这个其实就是hibernate对类里面的属性进行的配置吧。附上相应的代码,要记得修改相应的数据,或者建立好数据库之后使用persistence进行自动化的生成,这个百度上面都有具体的操作

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-mapping PUBLIC"-//Hibernate/Hibernate Mapping DTD 3.0//EN""http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<hibernate-mapping package="com.xfc.pojo"><class name="Product" table="product_"><id name="id" column="id"><generator class="native"></generator></id><property name="name" /><property name="price" /></class></hibernate-mapping>

数据库的基本建立

建立好数据库之后建表赋值

其实在做好建立数据库这一步之后上面直接用自动生成就好 pojo里面的内容其实不需要写,但是这个给自己一个回顾吧

然后就是hibernate.cfg.xml的配置,这个里面的配置就是针对于数据库的连接,这就是hibernate里面的session的具体使用了

<?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><!-- Database connection settings --><property name="connection.driver_class">com.mysql.jdbc.Driver</property><property name="connection.url">jdbc:mysql://localhost:3306/test?characterEncoding=GBK</property><property name="connection.username">root</property><property name="connection.password">1234</property><!-- SQL dialect --><property name="dialect">org.hibernate.dialect.MySQLDialect</property><property name="current_session_context_class">thread</property><property name="show_sql">true</property><property name="hbm2ddl.auto">update</property><mapping resource="com/xfc/pojo/Product.hbm.xml" /></session-factory>
</hibernate-configuration>

然后就我自己来说,我去在DAO层里面写方法 建立一个DAO包

package com.xfc.dao;
import com.xfc.pojo.Product;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import org.hibernate.query.Query;public class ProductDAO {//在dao层里面写入增删改查的方法public void add(Product p) {List<Product> result = new ArrayList();
//session是hibernate与数据库进行联系的会话 打开,创建,关闭的操作
// session里面定义了增删改查的方法,所以比直接用strusts要方便的多SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();s.beginTransaction();s.save(p);s.getTransaction().commit();s.close();sf.close();}public Product get(int id) {Product result = null;SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();result = (Product) s.get(Product.class, id);s.close();sf.close();return result;}public void delete(int id) {List<Product> result = new ArrayList();SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();s.beginTransaction();Product p = (Product) s.get(Product.class, id);s.delete(p);s.getTransaction().commit();s.close();sf.close();}public void update(Product p) {List<Product> result = new ArrayList();SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();s.beginTransaction();s.update(p);s.getTransaction().commit();s.close();sf.close();}public List<Product> listProduct() {List<Product> result = new ArrayList();SessionFactory sf = new Configuration().configure().buildSessionFactory();Session s = sf.openSession();Query q = s.createQuery("from Product p");result = q.list();s.close();sf.close();return result;}
}

dao层里面写的就是CRUB的方法,最后建立相应的action层。这个是用来去真正意义上去实现的 ProductAction.java

package com.xfc.action;import com.xfc.dao.ProductDAO;
import com.xfc.pojo.Product;import java.util.List;public class ProducAction {ProductDAO pdao = new ProductDAO();Product product;List<Product> products;public ProductDAO getPdao() {return pdao;}public void setPdao(ProductDAO pdao) {this.pdao = pdao;}public Product getProduct() {return product;}public void setProduct(Product product) {this.product = product;}public List<Product> getProducts() {return products;}public void setProducts(List<Product> products) {this.products = products;}//构建完get/set方法之后在action里面写入增删改查的实际方法public String add() {pdao.add(product);return "list";}public String edit() {product =pdao.get(product.getId());return "edit";}public String delete() {pdao.delete(product.getId());return "list";}public String update() {pdao.update(product);return "list";}public String list() {products = pdao.listProduct();return "listJsp";}
}

对了,list是展示,把数据表现出来

然后配置相应的struts.xml了

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN""http://struts.apache.org/dtds/struts-2.5.dtd">
<struts><constant name="struts.i18n.encoding" value="UTF-8"></constant><package name="basicstruts" extends="struts-default"><action name="addProduct" class="com.xfc.action.ProducAction" method="add"><result name="list" type="redirect">listProduct.action</result></action><action name="deleteProduct" class="com.xfc.action.ProducAction" method="delete"><result name="list" type="redirect">listProduct.action</result></action><action name="updateProduct" class="com.xfc.action.ProducAction" method="update"><result name="list" type="redirect">listProduct.action</result></action><action name="editProduct" class="com.xfc.action.ProducAction" method="edit"><result name="edit">/WEB-INF/jsp/edit.jsp</result></action><action name="listProduct" class="com.xfc.action.ProducAction" method="list"><result name="listJsp">/WEB-INF/jsp/list.jsp</result></action></package>

里面的action之类的在我上篇里面有一个百度搜来的具体讲解,我自己也懵懵懂懂,不过还是要继续学习。大概的意思可能就是action配置好相应的具体文件目录,然后有相应的返回值从而去进行实在的跳转
这个后面就是页面的实现了 这个比较弱智,所以就直接附上相应的代码了
index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>$Title$</title></head><body><jsp:forward page="/WEB-INF/jsp/list.jsp"/></body>
</html>

list.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" isELIgnored="false"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<body>
<table align="center" border="1" cellspacing="0" width="500px"><tr><td>id</td><td>name</td><td>price</td><td>edit</td><td>delete</td></tr><s:iterator value="products" var="p"><tr><td>${p.id}</td><td>${p.name}</td><td>${p.price}</td><td><a href="editProduct?product.id=${p.id}">edit</a></td><td><a href="deleteProduct?product.id=${p.id}">delete</a></td></tr></s:iterator>
</table>
<br/>
<form action="addProduct" method="post"><table align="center" border="1" cellspacing="0"><tr><td>name:</td><td><input type="text" name="product.name" value=""></td></tr><tr><td>price:</td><td><input type="text" name="product.price" value=""></td></tr><tr><td colspan="2" align="center"><input type="submit" value="submit"></td></tr></table>
</form>
</body>
</html>

edit.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" isELIgnored="false"%><%@ taglib prefix="s" uri="/struts-tags"%><html><body><form action="updateProduct" method="post"><table align="center" border="1" cellspacing="0"><tr><td>name:</td><td><input type="text" name="product.name" value="${product.name}"></td></tr><tr><td>price:</td><td><input type="text" name="product.price" value="${product.price}"></td></tr><tr><td colspan="2" align="center"><input type="hidden" name="product.id" value="${product.id}"><input type="submit" value="submit"></td></tr></table></form></body>
</html>

这样下来就是具体的实现了 注意lib千万不要缺失,反正就是缺失了之后会调试起来会非常麻烦

具体的实现页面

就附上这两张了 别的都能实现。
然后就是希望自己能好好学习,真的人还是要能担当的起一点责任的。。

用idea使用struts和hibernate来实现CRUB的操作相关推荐

  1. ssh(Struts+spring+Hibernate)三大框架整合-简述

    ssh(Struts+spring+Hibernate)三大框架配合使用来开发项目,是目前javaee最流行的开发方式,必须掌握: 注意: 为了稳健起见,每加入一个框架,我们就需要测试一下,必须通过才 ...

  2. struts+spring+hibernate总结

    简单的说: struts 控制用的 hibernate 操作数据库的 spring 用解耦的 详细的说: struts 在 ssh 框架中起控制的作用 , 其核心是 Controller, 即 Act ...

  3. 【SSH进阶之路】Struts + Spring + Hibernate 进阶开端(一)

    Long Long ago.就听说过SSH.起初还以为是一个东东,详细内容更是不详,总认为高端大气上档次,经过学习之后才发现,不不过高大上,更是低调奢华有内涵,经过一段时间的研究和学习SSH框架的基本 ...

  4. java ssh框架 struts spring hibernate 简介

    目录 什么是SSH框架 浅谈Struts 什么是Struts Struts的核心构成 为什么使用Struts 浅谈Hibernate 什么是Hibernate Hibernate的核心构成 浅谈Spr ...

  5. Struts+Spring+Hibernate整合入门详解

    标签: strutshibernatespringbeanactionimport 2007-08-12 16:05 36280人阅读 评论(13) 收藏 举报 分类: STRUTS&SPRI ...

  6. Java新手如何学习Spring、Struts、Hibernate三大框架?

    spring,hibernate,struts 是JavaEE方向企业使用较多的几个框架技术,所以就会很多人想去学习这几个框架,当然这几个框架流行的时间也比较长了,相对资料也会比较多,但是适合新手的并 ...

  7. SSH框架(Struts+Spring+Hibernate)

    在SSH 的组合框架模式中,三者各自的作用? Struts 是一个很好的MVC框架,主要技术是Servlet和Jsp.Struts的MVC设计模式可以使我们的逻辑变得很清晰,让我们写的程序层次分明.基 ...

  8. Struts,Hibernate,Spring经典面试题收藏(转)

    http://dengzhangtao.iteye.com/blog/827471 Struts,Hibernate,Spring经典面试题收藏    以备不时只需. 关键字: struts, hib ...

  9. Struts+Spring+Hibernate处理Lob(Blob,Clob)--sessionFactory中注入 org.springframework.jdbc.support.lob.Def

    [转载]org.springframework.jdbc.support.lob. 转载▼ 标签: 转载 分类: spring 原文地址:org.springframework.jdbc.suppor ...

  10. jello框架,struts+spring+hibernate的终结者?

    jello框架V1.6(以下简称框架)是一个开源的基于AOA技术的java web应用程序框架,它包含了一些独特的观点如零配置.BCP模式.DMM持久化技术等等,支持快速的web应用程序开发.更多内容 ...

最新文章

  1. dbgridview内操作粘贴,复制,等量复制,增量复制
  2. C# http post 地址
  3. appium ios 真机自动化环境搭建
  4. NoClassDefFoundError和ClassNotFoundException
  5. 如何以sandbox模式测试开发好的Fiori Launchpad插件
  6. @ConfigurationProperties和@Value不同的使用场景,@Bean添加组件 (6.spring boot配置文件注入)...
  7. Dubbo服务导出原理
  8. 关于近期对自己的总结
  9. Bzoj2732 [HNOI2012]射箭
  10. 数学建模4 拟合算法
  11. koa2 中间件里面的next到底是什么
  12. matlab乘与点乘的区别 (*与.* ^与.^)
  13. NBU官方Doc網址https://www.veritas.com/support/en_US/article.DOC5332
  14. 《夜深人静写算法》数论篇 - (22) 卢卡斯定理
  15. 使用小程序制作一个飞机大战小游戏
  16. 【新手上路】Java必备小游戏——Flappy Bird(飞翔的小鸟)
  17. 神经网络中的偏置值什么意思
  18. [Web3.0]什么是Web3.0/时代
  19. 为什么许多芯片的CS信号(片选信号)经常都是低电平有效?
  20. 搭建Ubuntu的51单片机开发环境(学习记录)

热门文章

  1. 记解决一次drawable资源找不到的问题
  2. 云桌面服务器+搭建,搭建自己的云桌面服务器
  3. AJRW错误AA707
  4. 利用比值判敛法求收敛半径的问题
  5. 钓鱼网站制作 ---- Setoolkit 克隆web页面钓鱼
  6. 机器学习算法工程师在做什么?
  7. 钉钉机器人告警快速实现
  8. 计算机是概念化不是程序化,走进计算思维
  9. wps怎么自动生成目录?2分钟完成
  10. TRUNCATE和DETELE的区别