使用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>
çé¢æ¾ç¤ºæ¥è¯¢ç»æ
ï¼
对,提交表单时,怎么让地址栏不变。
追答用ajax不行吗?
追问额……我也想啊,可是还没学到那。
追答那就不太好处理了,
你可以这样,
所有的动作都通过一个servelt处理,即使用同一个action
通过不同的FLAG来判断要做什么.
最后返回,
这样行不行?
你的意思是这样吧↓
考虑过2种方法,1.action="*.jsp?function='sendMicroblog'"; get拼接
2.action =“*.jsp”在表单中拼提交数据。
第一种太不安全,若提交后再刷新就会出问题。
你的意思是使用第二种了?
不是这样.
/Servlet
所有的请求都提交给这一个servlet类,
用一个隐藏文件框fun 隐藏值.
不同的动作,提交的值不一样.