jsp--提交表单→插入数据库→成功后返回提示信息

使用Servlet处理
在页面 *.jsp 中
1.输入表单信息 → insertServlet
2.提交表单
3.插入数据库数据 若成功进入4,失败则返回错误信息
4.返回页面提示成功

要求:1.不能使用session,上下文
2.转回后的网页地址必须保持原先的网页地址

问题:1.若使用服务器内部跳转响应就变成:表单的action地址了。
2.若使用重定向就不知道插入数据是否成功。
3.若使用session与上下文会浪费服务器内存。

求高手^_^

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> 

界面显示查询结果

:

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-05-04
直接提交表单到Servlet
然后在Servlet里处理表单穿进来的数据
使用一个模型类来操作数据库
然后判断是否成功插入数据到数据
把是否成功插入数据库 的状态设置到一个blooean的变量的里
然后把这个blooean的变量使用request.setAttribute()穿到jsp页面里
在jsp里设置用request.getAttribute读出这个属性
然后根据这个属性来显示是否成功把数据插入数据库(第一次打开页面的时候这个属性的值应该null 这里可以设置如果这个值是null 就什么都不做)
第2个回答  2012-05-04
一个曲线解决方法:条件重写向,在servlet中判断数据库IO是否成功,成功就跳转到一个页面上;不成功则跳到另外一个页面上。
第3个回答  2012-05-04
用ajax实现
第4个回答  推荐于2017-11-25
你想问什么?
就是提交表单,地址栏还不想变吗?追问

对,提交表单时,怎么让地址栏不变。

追答

用ajax不行吗?

追问

额……我也想啊,可是还没学到那。

追答

那就不太好处理了,
你可以这样,
所有的动作都通过一个servelt处理,即使用同一个action
通过不同的FLAG来判断要做什么.
最后返回,

这样行不行?

追问

你的意思是这样吧↓
考虑过2种方法,1.action="*.jsp?function='sendMicroblog'"; get拼接
2.action =“*.jsp”在表单中拼提交数据。
第一种太不安全,若提交后再刷新就会出问题。
你的意思是使用第二种了?

追答

不是这样.
/Servlet

所有的请求都提交给这一个servlet类,
用一个隐藏文件框fun 隐藏值.
不同的动作,提交的值不一样.

本回答被提问者采纳
相似回答