structs +hibernate 通过Action 将前台数据存入数据库 , 表单提交

逻辑:前台jsp中的form,调用action中的add方法,action中通过定义和页面元素相同的私有变量(生成get、set方法可以拿到前台变量),然后调用dao中的hibernate保存

1、struts.xml

采用通配符配置
  <action name="test_*" class="com.action.TestAction" method="{1}">
   <result name="add_sucess">/test/addTestSucess.jsp</result>
   <result name="search_sucess">/test/searchTest.jsp</result>
  </action>

2、前台页面 addTest.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<body style="background:#F5F5F5">
<div>
<ol class="breadcrumb">
  <li class="active">测试</a></li>
  <li class="active">添加</li>
</ol>
<div id="content">
<form action="test_add.action" method="post" id="test">
 <table class="table table-bordered" border="0" width="100%" align="center">
  <tr>
   <td style="width: 270px; height: 18px;">
   a:
   </td>
   <td style="width: 500px; height: 18px;">
     <input type="text" name="a" class="form-control input-sm" style="width:300px" placeholder="a" value="">
   </td>
   <td style="width: 270px; height: 18px;">
    b:
   </td>
   <td style="width: 500px; height: 18px;">
     <input type="text" name="b" class="form-control input-sm" style="width:300px" placeholder="b" value="">
   </td>
  </tr>
  <tr>
   <td style="width: 270px; height: 18px;">
     c:
   </td>
   <td style="width: 500px; height: 18px;">
     <input type="text" name="c" class="form-control input-sm" style="width:300px" placeholder="c" value="">
   </td>
   
  </tr>
 
 </table>
 <table align="center">
   <center>
   <div class="btn-group" style="text-align:center">
   <td style="width: 200px;">
    <input type="submit" class="btn btn-info btn-lg" value="提交">
   </td>
   <td style="width: 200px;">
    <button type="button" class="btn btn-info btn-lg">重置</button>
   </td>
   </div>
   </center>
 </table>
 
 </form>
</div>
</div>
</body>
</html>

3、TestAction 

import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import com.bean.TestPortal;
import com.service.TestService;
import com.opensymphony.xwork2.ActionSupport;
/**
 * 测试action
 * @author anjl
 *
 */
public class TestAction extends ActionSupport {
 
 private static final long serialVersionUID = 1L;
 @Autowired
 private TestService testService;
 
 private String a="";
 private String b="";
 private String c="";
 /*private int page =1;
 private String op;*/
 
 private List<TestPortal> list;
 
 public List<TestPortal> getList() {
  return list;
 }
 public void setList(List<TestPortal> list) {
  this.list = list;
 }
 public String getA() {
  return a;
 }
 public void setA(String a) {
  this.a = a;
 }
 public String getB() {
  return b;
 }
 public void setB(String b) {
  this.b = b;
 }
 public String getC() {
  return c;
 }
 public void setC(String c) {
  this.c = c;
 }
 public String add() {
  System.out.println("==add===="+getA());
  TestPortal t = new TestPortal(getA(),getB(),getC());
  testService.add(t);
  return "add_sucess";
 }
 
 public String search(){
 
  /*if(op!=null&&op.equals("first")){
   page=1;
  }else if(op!=null&&op.equals("before")){
   page = page-1;
  }else if(op!=null&&op.equals("after")){
   page = page+1;
  }*/
 
  System.out.println("==========search=========");
  list = testService.search(getA(), getB(), getC());
  return "search_sucess";
 }
}

4、bean  TestPortal  和数据表对应

import java.io.Serializable;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
@Entity
@Table(name="testPortal")
public class TestPortal implements Serializable{
 private static final long serialVersionUID = 1L;
 public TestPortal(){
 }
 
 public TestPortal(String a,String b,String c){
  this.a=a;
  this.b=b;
  this.c=c;
 }
 
 @Id
 @GeneratedValue(strategy=GenerationType.AUTO)
 @Column(name = "id")
 private Long id;
 
 @Column(name = "a")
 private String a;
 @Column(name = "b")
 private String b;
 @Column(name = "c")
 private String c;
 
 
 public Long getId() {
  return id;
 }
 public void setId(Long id) {
  this.id = id;
 }
 public String getA() {
  return a;
 }
 public void setA(String a) {
  this.a = a;
 }
 public String getB() {
  return b;
 }
 public void setB(String b) {
  this.b = b;
 }
 public String getC() {
  return c;
 }
 public void setC(String c) {
  this.c = c;
 }
}

5、service层和dao层

主要是dao层,service没做处理
(1)、TestDaoImpl 
import java.util.List;
import javax.annotation.Resource;
import org.hibernate.Query;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.stereotype.Repository;
import com.haier.bean.TestPortal;
import com.haier.dao.TestDao;
@Repository("testDao")
public class TestDaoImpl implements TestDao {
 private HibernateTemplate hibernateTemplate;
 public HibernateTemplate getHibernateTemplate() {
  return hibernateTemplate;
 }
 @Resource
 public void setHibernateTemplate(HibernateTemplate hibernateTemplate) {
  this.hibernateTemplate = hibernateTemplate;
 }
 @Override
 public void add(TestPortal t) {
  Session session = this.getHibernateTemplate().getSessionFactory()
    .getCurrentSession();
  session.save(t);
 }
 @Override
 public List<TestPortal> search(String a, String b, String c) {
 
  Session session = this.getHibernateTemplate().getSessionFactory()
    .getCurrentSession();
  StringBuffer hql = new StringBuffer("from TestPortal testPortal where 1=1 ");
  if(!"".equals(a) && null!=a){
   hql.append(" and a='"+a+"' ");
  }
  if(!"".equals(b) && null!=b){
   hql.append(" and b='"+b+"' ");
  }
  if(!"".equals(c) && null!=c){
   hql.append(" and c='"+c+"' ");
  }
  List<TestPortal> list =null;
  System.out.println("search hql : "+hql.toString());
  Query query = session.createQuery(hql.toString());
  list = query.list();
  return list;
 }
}

(2)、service 没做处理
import java.util.List;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.gp.dao.UserDao;
import com.haier.bean.TestPortal;
import com.haier.dao.TestDao;
import com.haier.service.TestService;
@Service("testService")
public class TestServiceImpl implements TestService{
 
 private TestDao testDao;
 public TestDao getTestDao() {
  return testDao;
 }
 @Resource(name="testDao")
 public void setTestDao(TestDao testDao) {
  this.testDao = testDao;
 }
 @Override
 public void add(TestPortal t) {
  testDao.add(t);
 }
 @Override
 public List<TestPortal> search(String a, String b, String c) {
  List<TestPortal> list = testDao.search(a, b, c);
  return list;
 }
}



你可能感兴趣的:(表单提交,structs,+hibernate,通过Action,将前台数据存入数据库)