jsp--提交表单→插入数据库→成功后返回提示信息
在页面 *.jsp 中
1.输入表单信息 → insertServlet
2.提交表单
3.插入数据库数据 若成功进入4,失败则返回错误信息
4.返回页面提示成功
要求:1.不能使用session,上下文
2.转回后的网页地址必须保持原先的网页地址
问题:1.若使用服务器内部跳转响应就变成:表单的action地址了。
2.若使用重定向就不知道插入数据是否成功。
3.若使用session与上下文会浪费服务器内存。
求高手^_^ 展开
2016-01-12 · 做真实的自己 用良心做教育
jsp通过提交表单执行到的action直接操作service进而调用dao接口插入然后返回到servlet控制状态即可。
举例:
index.jsp页面代码如下:
<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="utf-8"%>
<%@ page contentType="text/html;charset=utf-8"%>
<%
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=utf-8");
%>
<html>
<head>
<title>add message into table </TITLE>
</head>
<body>
<%
String id=request.getParameter("id"); //从表单获得
String name=request.getParameter("name"); //从表单获得
String sex=request.getParameter("sex"); //从表单获得
String age=request.getParameter("age"); //从表单获得
java.util.Date date=new java.util.Date();
String datetime=new Timestamp(date.getTime()).toString();
try
{
/** 连接数据库参数 **/
String driverName = "com.mysql.jdbc.Driver"; //驱动名称
String DBUser = "root"; //mysql用户名
String DBPasswd = "123456"; //mysql密码
String DBName = "html_db"; //数据库名
String connUrl = "jdbc:mysql://localhost/" + DBName + "?user=" + DBUser + "&password=" + DBPasswd;
Class.forName(driverName).newInstance();
Connection conn = DriverManager.getConnection(connUrl);
Statement stmt = conn.createStatement();
stmt.executeQuery("SET NAMES UTF8");
String insert_sql = "insert into person_tb values('" + id + "','" + name + "','" + sex + "','" + age + "')";
String query_sql = "select * from person_tb";
try {
stmt.execute(insert_sql);
}catch(Exception e) {
e.printStackTrace();
}
try {
ResultSet rs = stmt.executeQuery(query_sql);
while(rs.next()) {
%>
ID:<%=rs.getString("id")%> </br>
姓名:<%=rs.getString("name")%> </br>
性别:<%=rs.getString("sex")%> </br>
年龄:<%=rs.getString("age")%> </br> </br>
<%
}
}catch(Exception e) {
e.printStackTrace();
}
//rs.close();
stmt.close();
conn.close();
}catch (Exception e) {
e.printStackTrace();
}
%>
</body>
</html>
界面显示查询结果
:
然后在Servlet里处理表单穿进来的数据
使用一个模型类来操作数据库
然后判断是否成功插入数据到数据
把是否成功插入数据库 的状态设置到一个blooean的变量的里
然后把这个blooean的变量使用request.setAttribute()穿到jsp页面里
在jsp里设置用request.getAttribute读出这个属性
然后根据这个属性来显示是否成功把数据插入数据库(第一次打开页面的时候这个属性的值应该null 这里可以设置如果这个值是null 就什么都不做)
就是提交表单,地址栏还不想变吗?
对,提交表单时,怎么让地址栏不变。
用ajax不行吗?