在java web项目中如何在jsp页面写java中实现点击一个保存按钮就可以将页面上的数据存储到对应的数据库中的表中

javaweb开发jsp页面一次性保存多条数据,批量保存数据!
先看我要做成什么效果?有空扫下我们的二维码呗!一次性保存多条数据(批量保存)比较简单方便的做法就是使用json格式,具体看我的,我这篇文章详细的介绍了使用json来做批量保存!有图有代码有步骤!这是fieldTable.jsp页面上面的图就是我们要做成的样子,点击加号按钮,就在页面上增加一行,然后在行里的文本框中填写数据,点击保存数据到数据库中的按钮,就会把页面上的每一行数据都保存到数据库中的fieldInfo(字段表)表中,也就是批量保存!看下面的效果图!这就是我们要开发的批量保存!OK,接下来贴上代码(代码写完后我还没有整理,所以某个函数中的代码比较多,本来按照代码规范来说的话,一个函数中的代码最多不要超过30行,这样也比较容易阅读!所以还请大家大家见谅!说实话,我写这个批量保存,也是一时头脑发热,临时起意,突然就想写一个批量保存的东西!因为有时候我会想,如果我在一个jsp页面中,同时编辑多条记录,编辑好之后,点击提交,把刚才编辑的多条记录一口气的保存到数据库中,我在想,如果同时编辑了50条记录,点击提交保存,一口气保存50条记录到数据库中,效率上会不会不高,本着这样的想法,所以我临时起意写的这个批量保存的功能!或者这么说把,将来我要是在某些jsp页面上有table表格,表格中有多行记录,我点击保存,要把表格中的每一行的每个单元格的数据都保存到数据库中,这时候我写的这个批量保存就可以派上用场了,到时候我把我现在写的批量保存的代码拿出来改造一下,做成一个通用的批量保存的函数,供其他页面或者其他地方调用,那不是很好嘛?)好了好了,废话不多说了,还是上代码吧!刚才就是要上代码的,结果我又啰嗦了一大堆!这是fieldTable.jsp页面的代码!&%@page import="com.jiongmeng.entity.GoodsType"%&
&%@ page language="java" contentType="text/ 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"&
&meta http-equiv="Content-Type" content="text/ charset=utf-8"&
&title&囧萌网上书店,网上书城(于都县囧萌软件有限公司,江西省赣州市于都县)&/title&
&link rel="stylesheet" type="text/css" href="background/css/body.css"
media="all"&
&link rel="stylesheet" type="text/css" href="background/css/mark.css"&
&script type="text/javascript" src="background/js/ToolTip.js"&&/script&
&style type="text/css"&
width: 300
height: 30
border: 2px solid #8E388E;
border-radius: 4 /*设置边框的4个直角变成圆角有弧度*/
font-weight: /*文本框中的文本字体加粗*/
background-color: #F2F2F2;
input[type=button], input[type=submit]{
background-color: #8E388E;
&script type="text/javascript"&
//追加一行
function addRow(){
var tableNode = document.getElementById("fieldTable");
var trNodeList = tableNode.getElementsByTagName("tr");
for (var index = 0; index & trNodeList. index++) {
var tdNodeList = trNodeList[index].getElementsByTagName("td");
for (var i = 0; i & tdNodeList. i++) {
alert(tdNodeList[i].id);
//得到最后一行(tr)的所有td
var tdNodeList = trNodeList[trNodeList.length - 1].getElementsByTagName("td");
var td_input_name = tdNodeList[0].getElementsByTagName("input")[0].
var strIndex = td_input_name.indexOf("_");
var number = td_input_name.substring(strIndex + 1)
var trNode = document.createElement("tr");
var tdText = '';
var td1_input_fieldName = '&td&&input type="text" name="fieldName_' + number + '" value=""&&/td&';
var td2_input_fieldType = '&td&&input type="text" name="fieldType_' + number + '" value=""&&/td&';
var td3_input_fieldLength = '&td&&input type="text" name="fieldLength_' + number + '" value=""&&/td&';
tdText = td1_input_fieldName + td2_input_fieldType + td3_input_fieldL
trNode.innerHTML = tdT
tableNode.appendChild(trNode);
//alert("追加一行");
jsp中有内置对象,平时我们java中使用对象需要1.先声明2创建,而内置对象不需要声明也不需要创建,可以直接拿来使用,jsp内
置对象也叫隐藏对象或隐含对象或隐式对象
//测试代码
GoodsType goodsType =
request.setAttribute("goodsType", goodsType);
String hometown = "江西省赣州市于都县";
session.setAttribute("hometown", hometown);
System.out.println("我是test.jsp页面!");
测试空实体对象.属性是否会报空指针异常=${requestScope.goodsType.goodsTypeId }
&br& 家乡 = ${sessionScope.hometown}
request.setAttribute("test", "jack");
request.setAttribute("test", "jerry");
out.print(request.getAttribute("test") + "&br&");
pageContext.setAttribute("myHome", "江西省赣州市于都县");
request.setAttribute("myHome", "于都县");
out.println("myHome = " + pageContext.getAttribute("myHome"));
&br& hometown:${requestScope.hometown }
&form action="fieldTableServlet" method="post"&
&input type="submit" value="保存数据到数据库中"&
&input type="button" value="+(增加一行)" onclick="addRow()"&
&table id="fieldTable"&
&tr id="tr1"&
&th&字段名&/th&
&th&字段类型&/th&
&th&字段长度&/th&
&tr id="tr2"&
&td id="td1"&&input type="text" name="fieldName_1" value="姓名"&&/td&
&td id="td2"&&input type="text" name="fieldType_1" value="字符串"&&/td&
&td id="td3"&&input type="text" name="fieldLength_1" value="40"&&/td&
&tr id="tr3"&
&td id="td1"&&input type="text" name="fieldName_2" value="籍贯"&&/td&
&td id="td2"&&input type="text" name="fieldType_2" value="字符串"&&/td&
&td id="td3"&&input type="text" name="fieldLength_2" value="120"&&/td&
&c:if test="${!(empty requestScope.message)}"&
&script type="text/javascript"&
showWindow("温馨提示", "${requestScope.message}", 500, 120, true);
&/html&jsp页面上的form表单提交到一个servlet中,然后在servlet中去处理!我就在servlet中拼接的sql语句,然后在servlet中调用dao,规范的做法肯定不是这样做的,sql语句要写在dao层,我这里是为了省事图方便,所以才在servlet中写sql语句。接下来看servlet中的代码,servlet的类名叫FieldTableServlet,FieldTableServlet类的url访问路径是fieldTableServlet,也就是我们fieldTable.jsp页面中的form表单的action要填写的地址,即action="fieldTableServlet"(注意:FieldTableServlet类中的saveFieldTable()函数中的代码我还没整理,小伙伴们凑合着看,你们自己去整理也可以哈,当然,你们也可以有不同的写法,思路对了就行!)package com.jiongmeng.
import java.io.IOE
import java.sql.SQLE
import java.util.ArrayL
import java.util.E
import java.util.HashM
import java.util.HashS
import java.util.I
import java.util.L
import java.util.M
import java.util.Map.E
import java.util.S
import javax.servlet.ServletE
import javax.servlet.annotation.WebS
import javax.servlet.http.HttpS
import javax.servlet.http.HttpServletR
import javax.servlet.http.HttpServletR
import com.jiongmeng.db.JdbcT
@WebServlet("/fieldTableServlet")
public class FieldTableServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
JdbcTemplate jdbcTemplate = new JdbcTemplate();
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int row = saveFieldTable(request, response);
request.setAttribute("message", row & 0 ? "成功保存" + row + "条记录!" : "保存失败!");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
request.getRequestDispatcher("fieldTable.jsp").forward(request, response);
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 处理中文乱码,可以使用过滤器
request.setCharacterEncoding("utf-8");
doGet(request, response);
protected int saveFieldTable(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException, ClassNotFoundException, SQLException {
// 得到所有的请求参数名称
Enumeration&String& parameterNames = request.getParameterNames();
// 用来装所有的参数名称的后缀(即下划线后面的)
List&String& parameterNamesSuffix = new ArrayList&String&();
List&String& newParameterNamesSuffix = new ArrayList&String&();
// 用来装所有的参数名称和参数值
Map&String, String& parameterNamesAndValues = new HashMap&String, String&();
List&String& parameterNameList = new ArrayList&String&();
while (parameterNames.hasMoreElements()) {
// 得到请求参数的名称
String parameterName = parameterNames.nextElement();
// 根据下划线拆分
String[] myParameterName = parameterName.split("_");
// 得到下划线后面的部分
parameterNamesSuffix.add(myParameterName[myParameterName.length - 1]);
// 保存参数名称和参数值
parameterNamesAndValues.put(parameterName, request.getParameter(parameterName));
parameterNameList.add(parameterName);
String parameterValue = request.getParameter(parameterName);
System.out.println(parameterName + " = " + parameterValue);
Set&String& set = new HashSet&String&();
for (String parameterNameSuffix : parameterNamesSuffix) {
if (set.add(parameterNameSuffix)) {
newParameterNamesSuffix.add(parameterNameSuffix);
System.out.println("--------请求参数的名称和参数值-------------------------");
Set&Entry&String, String&& entrySetParameterNamesAndValues = parameterNamesAndValues.entrySet();
Iterator&Entry&String, String&& it = entrySetParameterNamesAndValues.iterator();
System.out.println("-------------请求参数的后缀--------------------");
String[] fieldNames = new String[parameterNamesAndValues.size()];
String[] fieldValues = new String[parameterNamesAndValues.size()];
int elementIndex = 0;
while (it.hasNext()) {
Entry&String, String& entry = it.next();
fieldNames[elementIndex] = entry.getKey();
fieldValues[elementIndex] = entry.getValue();
elementIndex++;
for (int i = 0; i & fieldNames. i++) {
System.out.println(fieldNames[i] + "
" + fieldValues[i]);
System.out.println("------------------------------------");
int successCount = 0;
for (int i = 0; i & newParameterNamesSuffix.size(); i++) {
FieldTable fieldTable = new FieldTable();
StringBuffer sql = new StringBuffer(
INTO fieldInfo ( fieldName , fieldType , fieldLength ) VALUES (");
System.out.println(newParameterNamesSuffix.get(i));
for (int index = 0; index & fieldNames. index++) {
String[] field = fieldNames[index].split("_");
if (newParameterNamesSuffix.get(i).equals(field[field.length - 1])) {
System.out.println(
newParameterNamesSuffix.get(i) + "
" + fieldNames[index] + "
" + fieldValues[index]);
if ("fieldName".equals(field[0])) {
fieldTable.setFieldName(fieldValues[index]);
} else if ("fieldType".equals(field[0])) {
fieldTable.setFieldType(fieldValues[index]);
} else if ("fieldLength".equals(field[0])) {
fieldTable.setFieldLength(fieldValues[index]);
sql.append(" '" + fieldTable.getFieldName() + "', ");
sql.append(" '" + fieldTable.getFieldType() + "', ");
sql.append(" '" + fieldTable.getFieldLength() + "' )");
int row = jdbcTemplate.update(sql.toString());
successCount +=
System.out.println(sql.toString());
System.out.println("共保存了" + successCount + "条数据!");
return successC
fieldTable.jsp页面中有几行记录,就会生成几条INSERT插入语句,后台就会调用几次插入数据的函数,如下就是根据fieldTable.jsp页面中的记录行生成的INSERT的sql语句。INSERT
INTO fieldInfo ( fieldName , fieldType , fieldLength ) VALUES ( '姓名',
'40' )INSERT
INTO fieldInfo ( fieldName , fieldType , fieldLength ) VALUES ( '籍贯',
'120' )INSERT
INTO fieldInfo ( fieldName , fieldType , fieldLength ) VALUES ( '年龄',
'3' )INSERT
INTO fieldInfo ( fieldName , fieldType , fieldLength ) VALUES ( '家庭地址',
'90' )INSERT
INTO fieldInfo ( fieldName , fieldType , fieldLength ) VALUES ( '电话号码',
'11' )等等等.......后面的sql语句我就不全部列举出来了!大家知道意思就行哈!最后一个类就是实体类了,实体类的类名叫FieldTable,该类中就是一些属性,其实就是和数据库中fieldInfo表中的字段相互对应(属性包括fieldId,fieldName,fieldType,fieldLength)和set,get方法和构造方法!代码如下:/**
* &p&Application Name: jmBookShop&/p&
* &p&Application Description: 医疗管理系统产品&/p&
* &p&Copyright: Copyright (c) 2017 版权归囧萌软件科技公司所有&/p&
* &p&Time: 日下午11:29:25&/p&
* &p&Company: 囧萌软件科技公司&/p&
* @author 囧囧
* @author &a href=""&囧囧&/a&
* @version 1.0
package com.jiongmeng.
* @Description: (这里用一句话描述这个类的作用)
* @author 囧囧 E-mail: jerry
* @date: 日 下午11:29:25
Copyright: Copyright (c) 版权归囧萌软件科技公司所有
* @version 创建时间:日 下午11:29:25
public class FieldTable {
private int fieldId;
private String fieldN
private String fieldT
private String fieldL
* &p&Title: &/p&
* &p&Description: &/p&
public FieldTable() {
* &p&Title: &/p&
* &p&Description: &/p&
* @param fieldName
* @param fieldType
* @param fieldLength
public FieldTable(String fieldName, String fieldType, String fieldLength) {
this.fieldName = fieldN
this.fieldType = fieldT
this.fieldLength = fieldL
* &p&Title: &/p&
* &p&Description: &/p&
* @param fieldId
* @param fieldName
* @param fieldType
* @param fieldLength
public FieldTable(int fieldId, String fieldName, String fieldType, String fieldLength) {
this.fieldId = fieldId;
this.fieldName = fieldN
this.fieldType = fieldT
this.fieldLength = fieldL
* @return the fieldId
public int getFieldId() {
return fieldId;
* @param fieldId the fieldId to set
public void setFieldId(int fieldId) {
this.fieldId = fieldId;
* @return the fieldName
public String getFieldName() {
return fieldN
* @param fieldName the fieldName to set
public void setFieldName(String fieldName) {
this.fieldName = fieldN
* @return the fieldType
public String getFieldType() {
return fieldT
* @param fieldType the fieldType to set
public void setFieldType(String fieldType) {
this.fieldType = fieldT
* @return the fieldLength
public String getFieldLength() {
return fieldL
* @param fieldLength the fieldLength to set
public void setFieldLength(String fieldLength) {
this.fieldLength = fieldL
批量保存的功能就介绍到这里了,其实我们只要保持对软件功能的好奇,我们就会在看到别人的软件的时候去思考,咦,这功能是怎么做出来的,咦,如果让我来做这个功能,我会怎么做,我会怎么写这个功能呢?咦,我这样写有没有比别人的写法执行效率更高,性能更好呢?咦,我写的代码有没有像写诗一样行云流水,阅读起来简单明了的感觉呢?如果还没有像写诗一样行云流水的感觉,就说明我们写的代码还不够好,不够精辟,不够清晰明了,不够通俗易懂,不够流畅,所以还有提高的空间,还有优化的空间,还有重构的空间,所以对程序保持好奇,这样我们才能不断的进步和提高自身的能力!有空扫下我们的二维码呗!
没有更多推荐了,如何在jsp页面点击提交按钮后,实现自动刷新页面_百度知道
如何在jsp页面点击提交按钮后,实现自动刷新页面
如何在jsp页面点击提交按钮后,实现自动刷新页面,然后将存入后台数据库的数据全部查询出来以提交信息的时间排序,将所有数据显示到页面上,然后将时间最近的那条显示到第一行,具体的表是comment_tb,字段是id,name,data(时间),text(发布内容),我是初...
我有更好的答案
通过浏览器的reload方法即可在提交之后重新刷新页面&script language=javascript& function winclose() { //此处填写要处理的逻辑代码window.opener.location.reload();//刷新 } &/script& &input type=“button” name=“close” value=&提交& onclick=“winclose()”/&
采纳率:82%
来自团队:
如果是jsp的话肯定会自动刷新的·因为用的是http请求的方式你所说的问题其实并不存在着刷不刷新的事··你只要在jsp页面上填写数据
然后点击提交按钮
然后再把数据写入数据库中··点击之后 页面会自己刷新··然后你在做一个查询的按钮
点击查询按钮
你自己再去数据库中返回数据就OK了
逻辑是非常简单的··一步步的来 别心急
本回答被提问者采纳
自动刷新一般用js实现的
昏。你一步一步做行不行?
你说的是从page1.jsp点击按钮到page2.jsp,同时page2.jsp显示数据吗?又或者是直接在page1.jsp点击按钮然后回到page1.jsp页面显示数据?这两种原理都一样点击提交按钮到服务器,通过服务器返回数据到页面具体查询数据库的代码不该放在jsp页面,应该在类文件中实现。jsp页面只是做显示操作。如果你是初学者的话,建议你分块来学习:1.你先尝试在servlet中存储一些自定义的数据,然后在jsp显示出来。2.学习java的dao查询数据库的具体操作,这个网上很多,学校图书馆也有3.把1和2结合起来使用你这个功能对于初学者需要练习好几天呢,欲速则不达,慢慢来
其他2条回答
为您推荐:
其他类似问题
您可能关注的内容
自动刷新的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。如何在jsp页面中实现点击一个提交按钮就可以将页面上的数据存储到对应的数据库中的表中_百度知道
如何在jsp页面中实现点击一个提交按钮就可以将页面上的数据存储到对应的数据库中的表中
如何在jsp页面中实现点击一个提交按钮就可以将页面上的数据存储到对应的数据库中的表中,具体的表是User,字段是id,name,data(时间),text(发布内容),我是初学者,麻烦哪个兄弟帮忙给提供下代码,用jsp编写
我有更好的答案
register.jsp:&%@ page language=&java& import=&java.util.*& pageEncoding=&UTF-8&%&&html&&head&&title&这是一个注册页面&/title&&/head&&body&&center&&form action=&adduser.jsp& method=&post&&&table width=&777& border=&0& cellspacing=&0& cellpadding=&0& align=&center& style=&top: 131 height: 30&&&tr&
&td align=&left&&&b&&font size=&3&&用户序号:&/font&&/b&&/td&
&td&&input type=&text& name=&id& size=&12&&&/td&
&td align=&left&&&b&&font size=&3&&用户名:&/font&&/b&&/td&
&td&&input type=&text& name=&name& size=&12&&&/td&
&td align=&left&&&b&&font size=&3&&时间:&/font&&/b&&/td&
&td&&input type=&date& name=&date& size=&12&&&/td&
&td align=&left&&&b&&font size=&3&&发布内容:&/font&&/b&&/td&
&textarea name=&text& cols=&40& rows=&5&&请在这里输入您要发布的内容&/textarea&
&tr&&td&&input type=&submit& name=&Submit& value=&提交&&&/td&&/tr&
&/table&&/form&&/center&&/body&&/html&adduser.jsp:&%@ page language=&java& import=&java.util.*& pageEncoding=&UTF-8&%&&%@page import=&java.sql.*&%&&jsp:useBean id=&query& class=&user.dbfunction& scope=&page&&&/jsp:useBean&&html&
&title&将用户信息加入数据库&/title&&/head&
&% String id = request.getParameter(&id&); String name = request.getParameter(&name&); String date = request.getParameter(&date&);String text = request.getParameter(&text&); ResultSet rs=
String str=&select id,name,date,text from User where name='&+name+&';&;
query.connect();
rs=query.select(str);
rs.last();
str=&insert into User(id,name,date,text)values('&+id+&','&+name+&','&+date+&','&+text+&');&;
query.update(str);
out.println(&提交信息成功!&);
out.print(&本页面将在3秒后自动跳转到上一页面!&);
out.print(&&meta
http-equiv=&+&refresh&+&
content=& +&3;url=register.jsp&+&&&);
&/body&&/html&附加数据库操作类:// 本类用来建立与数据库的连接import java.sql.*;public class dbfunction { private static Connection con =
private static Statement stmt =
private static ResultSet rs =
public void connect(){
String url = &jdbc:mysql://localhost:3306/bookshop&; /在这里修改数据库名
Class.forName(&com.mysql.jdbc.Driver&);/在这里修改数据库,我用的是Mysql
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
con= DriverManager.getConnection(&jdbc:mysql://localhost:3306/bookshop?user=root&password=123456&useUnicode=true&characterEncoding=GB2312&);/在这里修改数据库Mysql的信息
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
public ResultSet select(String query)
System.out.println(query);
stmt = con.createStatement();
rs = stmt.executeQuery(query);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
public void update(String upstr)
System.out.println(upstr);
stmt = con.createStatement();
int rs = stmt.executeUpdate(upstr);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
public void close()
stmt.close();
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}}}我在我的机子上做了一遍可以,你试试吧。。。
采纳率:30%
register.jsp:&%@ page language=&java& import=&java.util.*& pageEncoding=&UTF-8&%&&html&&head&&title&这是一个注册页面&/title&&/head&&body&&center&&form action=&adduser.jsp& method=&post&&&table width=&777& border=&0& cellspacing=&0& cellpadding=&0& align=&center& style=&top: 131 height: 30&&&tr&&td align=&left&&&b&&font size=&3&&用户序号:&/font&&/b&&/td&&td&&input type=&text& name=&id& size=&12&&&/td&&/tr&&tr&&td align=&left&&&b&&font size=&3&&用户名:&/font&&/b&&/td&&td&&input type=&text& name=&name& size=&12&&&/td&&/tr&&tr&&td align=&left&&&b&&font size=&3&&时间:&/font&&/b&&/td&&td&&input type=&date& name=&date& size=&12&&&/td&&/tr&&tr&&td align=&left&&&b&&font size=&3&&发布内容:&/font&&/b&&/td&&textarea name=&text& cols=&40& rows=&5&&请在这里输入您要发布的内容&/textarea&&/tr&&tr&&td&&input type=&submit& name=&Submit& value=&提交&&&/td&&/tr&&/table&&/form&&/center&&/body&&/html&adduser.jsp:&%@ page language=&java& import=&java.util.*& pageEncoding=&UTF-8&%&&%@page import=&java.sql.*&%&&jsp:useBean id=&query& class=&user.dbfunction& scope=&page&&&/jsp:useBean&&html&&head&&title&将用户信息加入数据库&/title&&/head&&body&&% String id = request.getParameter(&id&); String name = request.getParameter(&name&); String date = request.getParameter(&date&);String text = request.getParameter(&text&);ResultSet rs=String str=&select id,name,date,text from User where name='&+name+&';&;query.connect();rs=query.select(str);rs.last();str=&insert into User(id,name,date,text)values('&+id+&','&+name+&','&+date+&','&+text+&');&;query.update(str);out.println(&提交信息成功!&);out.print(&本页面将在3秒后自动跳转到上一页面!&);out.print(&&meta
http-equiv=&+&refresh&+&
content=& +&3;url=register.jsp&+&&&);%&&/body&&/html&
1条折叠回答
为您推荐:
其他类似问题
数据存储的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。

我要回帖

更多关于 jsp java获取页面内容 的文章

 

随机推荐