@1-4 Servlet 编程接口
* GenericServlet 是所有 Servlet 的鼻祖 (在类的层次上) 在接口层次上 Servlet 是鼻祖
* 用于 HTTP 的 Servlet 编程都通过继承 javax.servlet.http.HttpServlet 实现
* 请求处理方法: (分别对应 http 协议的7种请求)
1. doGet 响应Get请求,常用
2. doPost 响应Post请求,常用
* 实例的个数 : 在非分布式的情况下,通常一个Servlet在服务器中有一个实例
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
HttpServletRequest req 封装了客户端到服务器端的参数值
doGet() 这个方法是给 Container 调用的。
那么当然是由 Container 来负责把你这个形参的值的实参传过来
形参要求的是 Interface HttpServletRequest 这个接口
那么传递进来的肯定是实现了这个接口的类对象,实现了这个接口就可以调用这个接口的方法!
@1-5 Tools / video 记录
2013-12-24
一、多行注释快捷键
1.选中你要加注释的区域,用ctrl+shift+C 或者ctrl+/ 会加上//注释
2.先把你要注释的东西选中,用shit+ctrl+/ 会加上/* */注释
3.以上快捷键在重复按一下就会去掉加上的注释
07_SERVLET为什么有2个init方法 张志宇精辟解释阅读 tomcat 源码
utf-8 一个汉字三个字节表示+
09_SERVLET如何从上一个页面取得参数_02
07_SERVLET为什么有2个init方法 张志宇精辟解释阅读tomcat源码
TestInitServlet.java / public class TestInitServlet extends HttpServlet
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//注意<init-param>标签的位置
public class TestInitServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=GBK");
PrintWriter out = resp.getWriter();
out.println(this.getServletConfig().getServletName());
// out.println(this.getServletConfig().getInitParameter("name"));
//
String value1 = this.getServletConfig().getInitParameter("name");
value1 = new String(value1.getBytes("utf-8"), "GBK");
out.println(value1);
java.util.Enumeration params = this.getServletConfig()
.getInitParameterNames();
for (; params.hasMoreElements();) {
String name = params.nextElement().toString();
String value = this.getServletConfig().getInitParameter(name);
value = new String(value.getBytes("utf-8"), "GBK");
out.println(value);
}
out.close();
}
}
// <servlet>
// <servlet-name>TestInitServletaaa</servlet-name>
// <servlet-class>TestInitServlet</servlet-class>
// <init-param>
// <param-name>name</param-name>
// <param-value>小王</param-value>
// </init-param>
// <init-param>
// <param-name>gender</param-name>
// <param-value>男</param-value>
// </init-param>
// </servlet>
ThreeParams.htm
<form name="form1" method="post" action="ThreeParams">
<table width="343" border="1">
<tr>
<td width="92">param1</td>
<td width="94"><input name="param1" type="text"/> </td>
</tr>
<tr>
<td>param2</td>
<td><label>
<input name="param2" type="text"/>
</label></td>
</tr>
<tr>
<td>param3</td>
<td><input name="param3" type="text"/></td>
</tr>
<tr>
<td> </td>
<td><label>
<input type="submit" value="提交" />
</label></td>
</tr>
</table>
</form>
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
//读取三个参数
public class ThreeParams extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=GBK");
// 解决post方式提交内容的乱码
// 一定要写在存取第一个参数前
// 不要调用 response.setCharacterEncoding("GBK");
request.setCharacterEncoding("GBK");
// 解决get方式乱码问题:修改-->server.xml --> URLEncoding="GBK"
PrintWriter out = response.getWriter();
out.println(request.getParameter("param1"));
out.println("<br>");
out.println(request.getParameter("param2"));
out.println("<br>");
out.println(request.getParameter("param3"));
out.println("<br>");
System.out.println("in doGet");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
ShowParametersForm.htm
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
//获取所有的参数
public class ShowParameters extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String title = "Reading All Request Parameters";
out.println("<html><head><title>读取所有参数</title></head>"
+ "<BODY BGCOLOR='#FDF5E6'>\n" + "<H1 ALIGN=CENTER>" + title
+ "</H1>\n" + "<TABLE BORDER=1 ALIGN=CENTER>\n"
+ "<TR BGCOLOR=\"#FFAD00\">\n"
+ "<TH>Parameter Name<TH>Parameter Value(s)");
Enumeration paramNames = request.getParameterNames();
while (paramNames.hasMoreElements()) {
String paramName = (String) paramNames.nextElement();
out.print("<TR><TD>" + paramName + "\n<TD>");
String[] paramValues = request.getParameterValues(paramName);
if (paramValues.length == 1) {
String paramValue = paramValues[0];
if (paramValue.length() == 0)
out.println("<I>No Value</I>");
else
out.println(paramValue);
} else {
out.println("<UL>");
for (int i = 0; i < paramValues.length; i++) {
out.println("<LI>" + paramValues[i]);
}
out.println("</UL>");
}
}
out.println("</TABLE>\n</BODY></HTML>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
---
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE>A Sample FORM using POST</TITLE>
</HEAD>
<BODY BGCOLOR="#FDF5E6">
<H1 ALIGN="CENTER">A Sample FORM using POST</H1>
<FORM ACTION="ShowParameters"
METHOD="POST">
Item Number: <INPUT TYPE="TEXT" NAME="itemNum"><BR>
Quantity: <INPUT TYPE="TEXT" NAME="quantity"><BR>
Price Each: <INPUT TYPE="TEXT" NAME="price" VALUE="$"><BR>
<HR>
First Name: <INPUT TYPE="TEXT" NAME="firstName"><BR>
Last Name: <INPUT TYPE="TEXT" NAME="lastName"><BR>
Middle Initial: <INPUT TYPE="TEXT" NAME="initial"><BR>
Shipping Address:
<TEXTAREA NAME="address" ROWS=3 COLS=40></TEXTAREA><BR>
Credit Card:<BR>
<INPUT TYPE="RADIO" NAME="cardType"
VALUE="Visa">Visa<BR>
<INPUT TYPE="RADIO" NAME="cardType"
VALUE="Master Card">Master Card<BR>
<INPUT TYPE="RADIO" NAME="cardType"
VALUE="Amex">American Express<BR>
<INPUT TYPE="RADIO" NAME="cardType"
VALUE="Discover">Discover<BR>
<INPUT TYPE="RADIO" NAME="cardType"
VALUE="Java SmartCard">Java SmartCard<BR>
Credit Card Number:
<INPUT TYPE="PASSWORD" NAME="cardNum"><BR>
Repeat Credit Card Number:
<INPUT TYPE="PASSWORD" NAME="cardNum"><BR><BR>
<CENTER>
<INPUT TYPE="SUBMIT" VALUE="Submit Order">
</CENTER>
</FORM>
</BODY>
</HTML>
ShowParametersMap extends HttpServlet
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.util.*;
//获取所有的参数
public class ShowParametersMap extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String title = "Reading All Request Parameters";
out.println("<html><head><title>读取所有参数</title></head>"
+ "<BODY BGCOLOR='#FDF5E6'>\n" + "<H1 ALIGN=CENTER>" + title
+ "</H1>\n" + "<TABLE BORDER=1 ALIGN=CENTER>\n"
+ "<TR BGCOLOR=\"#FFAD00\">\n"
+ "<TH>Parameter Name<TH>Parameter Value(s)");
Map<String, String[]> paramMap = request.getParameterMap();
Set<Map.Entry<String, String[]>> entries = paramMap.entrySet();
for(Iterator<Map.Entry<String, String[]>> it = entries.iterator(); it.hasNext(); ) {
Map.Entry<String, String[]> entry = it.next();
String paramName = entry.getKey();
out.print("<TR><TD>" + paramName + "\n<TD>");
String[] paramValues = entry.getValue();
if (paramValues.length == 1) {
String paramValue = paramValues[0];
if (paramValue.length() == 0)
out.println("<I>No Value</I>");
else
out.println(paramValue);
} else {
out.println("<UL>");
for (int i = 0; i < paramValues.length; i++) {
out.println("<LI>" + paramValues[i]);
}
out.println("</UL>");
}
}
out.println("</TABLE>\n</BODY></HTML>");
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}