servelet
web.xml文件配置
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ServletFirstTest</servlet-name><!-html 协议访问名->
<servlet-class>com.ServletFirstTest</servlet-class><!-Servelet调用的java类名->
</servlet>
<servlet-mapping>
<servlet-name>ServletFirstTest</servlet-name><!-Servelet的html协议方文名->
<url-pattern>/servlet/ServletFirstTest</url-pattern><!-html访问的URL->
</servlet-mapping>
1.普通形式访问Servlet
直接访问URL:http://localhost:8080/ServletDemo/servlet/ServlUser 即: 项目名/servlet路径名
因为是一个标准的html请求,Servelet运行DoGet方法。
2.Post形式访问Servlet
表单
<html>
<head>
</head>
<body>
<form method="post" action="servlet/ServletFirstTest">
<input type="submit" name="submit" value="submit">
</form>
</body>
</html>
点击submit按钮,Servlet响应Form提交的Post请求,运行doPost方法。
requset对象
request对象方法分两类:
request特征信息:客户端信息,html头信息,服务器端信息。
request携带信息
1.客户端上传信息:Form信息和URL的Query传值信息。
2.请求的属性:开发者自己设定用于传递给其他Servlet或JSP.
3.持久对象信息:主要是客户端cookie和服务器端session对象的管理。
html方面:post主要通过Form的方式,当然也支持Get方法。Get还可以通过URL的query(?后面的名值对)。
eg: getParameter(String name) getPrameterValues(String name)
页面
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
</head>
<body>
<form action="servlet/ServlUser" method="post">
用户名:<input type="text" name="userName"/><br/>
密 码:<input type="password" name="passWord"/><br/>
确 认:<input type="password" name="passWord2"/><br/>
足球<input type="checkbox" name="in" value="football"/>
篮球<input type="checkbox" name="in" value="basketball"/>
<input type="submit" name="submit" value="提交"/>
</form>
</body>
</html>
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8"); // 设置页面编码,解决页面中文乱码问题
String userName = request.getParameter("userName"); //getParameter()取值
String password = request.getParameter("passWord");
String password2 = request.getParameter("passWord2");
String[] in = request.getParameterValues("in"); //getParameterValues()针对checkbox的多个值获取
for(int i=0;i<in.length;i++)
{
System.out.println(in[i]);
}
System.out.println(userName+password+password2);
PrintWriter out = response.getWriter();
out
.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(userName);
out.println(password);
out.println(password2);
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
以上用get方法也一样,只需要将method属性改为get.
不知道上传变量名字是使用getParameterNames(String name) 返回值是Java.util.Enumeration.
eg:下面doGet()方法:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");
Enumeration parameters=request.getParameterNames();
while(parameters.hasMoreElements())
{
System.out.println(parameters.nextElement().toString());
}
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}