您的位置:首页 > 编程语言 > Java开发

Java开发学习笔记之六:servlet-处理客户form数据

2006-10-04 12:21 956 查看
本实例在tomcat下测试通过。
用户在HTML页面中输入基本信息,这个HTML基本上用到的了所有的form元素,点“提交”时,将请求提交到servlet,servlet将用户输入的信息以表格的形式返回给客户。

一.客户端HTML(formparam.html)
<! DOCTYPE HTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<TITLE>
信息输入
</title>
</head>

<body bgcolor="#FFFFFF">
<p align="center"><b><font color="#009999" size="+2">员工信息表单<br></font>
<font color="#000000" size="+1"><br></font></b></p>
<p>本实例用来展示如何使用servlet的参数:</p>
<form action="formparam" method="post">姓:<input size="20" type="text" name="姓"><br>名:
<input size="20" type="text" name="名"><br>
<input type="checkbox" name="know java">熟悉java<br>
<input type="checkbox" name="know c++">熟悉c++<br>
<input type="radio" name="working" value="woking">已工作<input type="radio" name="working" value="unworking">未工作<br>工种<br>
<select size="3" name="job">
<option value="工程师">工程师</option>
<option value="学生">学生</option>
<option value="农民">农民</option>
</select><br><br>工作资质<br>
<select size="3" name="jobrank">
<option value="低级">低级</option>
<option value="中级">中级</option>
<option value="高级">高级</option>
</select><br><br>
<textarea rows="8" cols="50" name="备注">在这里输入其它信息</textarea>
<br>
<input type="submit" name="submit" value="submit"><input type="reset" name="重置" value="重置">
</form></body></html>

二.servlet(formparam.java)
package fey.servlets;

import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;

public class formparam extends HttpServlet{
public void doPost(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException
{
PrintWriter out;
String[] paramvalues;
String param,value;
Enumeration paramnames;
boolean first;
int i = 0;
resp.setContentType("text/html; charset=/"GBK/"");
out = resp.getWriter();
out.println("<html><body><h3>您输入的信息</h3><hr>");
out.println("<table border=1><tr><th>名称</th><th>值</th></tr>");
req.setCharacterEncoding("GB2312");
paramnames = req.getParameterNames();
while(paramnames.hasMoreElements()){
param = (String)paramnames.nextElement();
paramvalues=req.getParameterValues(param);
first = true;
value = "";
for(i=0;i<paramvalues.length;i++)
{
if(first){ value = value + paramvalues[i]; first = false;}
else value =value + "," + paramvalues[i];
}
value = req.getParameter(param);
out.println("<tr><td>"+param+"</td><td>"+value+"</td></tr>");
}
out.println("</table>");
out.println("<br><form action=/"formparam.html/"><input type=/"submit/" name=/"返回/" value=/"返回/"></form></body></html>");
out.flush();

}
public void doGet(HttpServletRequest req,HttpServletResponse resp)
throws ServletException,IOException
{
doPost(req,resp);
}
}

三.web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<display-name>fey's servlet</display-name>
<description>fey's servlet</description>

<servlet>
<servlet-name>formparam</servlet-name>
<servlet-class>fey.servlets.formparam</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>formparam</servlet-name>
<url-pattern>/formparam</url-pattern>
</servlet-mapping>

</web-app>

四.关于中文显示的问题
这两次在测试servlet的时候遇到一个问题,就是由servlet响应字符数据中若含有中文字符,则在客户浏览器中总是显示成乱码,经调试处理,总结了以下几点:
1.若客户端浏览器的form向web服务器发送的请求数据中含有中文字符,则需要将form的method属性设置为post;
2.在获得ServletResponse的getWriter对象以写响应之前,须先设置ServletResponse.setContentType("text/html; charset=/"GBK/"")
3.在用ServetRequest的GetParameter(),getParameterValues()等方法取得表单提交的数据之前需要设置ServletRequest.setCharacterEncoding("GBK")或ServletRequest.setCharacterEncoding("GB2312")
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐