The Servlet Technology Model Servlet 标准格式:
import java.io.* ;
import javax.servlet.* ;
import javax.servlet.http.* ;
public class HelloWorld extends HttpServlet { public void doXXX (HttpServletRequest request , HttpServletResponse response ) throws ServletException , IOException {
request.setCharacterEncoding(“Big5”) ;
response.setContentType(“text/html”) ;
PrintWriter out = response.getWriter() ; }
Bullet PONINT:BOOK 《SCWCD》 35页。
GET:参数以Query String 附在URL尾端,长度有限制,具体依赖于WEB SERVER,等幂的。
Query String(查询字符串):附在URL后端 (?后面以&符号隔开)。
协议表现形式:方法名(GET)、请求资源(通常是URL形式)、附加输入、协议名(HTTP)。
POST:参数以 Request Content 传送,数据长度不限,不是等幂的。
协议表现形式:方法名(POST)、请求资源(通常是URL形式)、协议名(HTTP)
Request Content(请求内容):POST方法由此传送请求参数(Request Parameter)或client端上传之资料。
Bullet PONINT:BOOK 《SCWCD》 58页。
WEB容器的功能:
1、通信的支持,为WEB应用当中的SERVLET提供了简单的方法进行通信。
2、SERVELT生命周期的管理,控制着SERVELT的产生及消亡。负责SERVLET类的载入,实例化,初始化,SERVICE方法的运行,调用正确的GET或POST方法,及消亡垃圾处理。
3、多线程的支持,为正在运行SERVICE方法的实例,当又有请求时创建线程。
4、安全的声明和管理。
5、JSP的支持。
Servlet 生命周期 Bullet PONINT:BOOK 《SCWCD》 124 125页
javax.servlet.Servlet 接口定义了五个方法,以下三个方法最重要: init(ServletConfig config) Servlet 启动时,每个Servlet(不管有多少产生多少请求,只有一个SERVLET实例)只会被执行一次 。service(ServletRequest req , ServletResponse res) ,每次有请求时,Servlet皆会执行,分配适当的,Doget()或Dopost()方法当然还有其他方法,通常常有的是上面所说两个。 destroy() Servlet 关闭时,执行一次执行之后,等待WEB容器进行垃圾回收. 这个与JAVA语言当中对象的finalize()方法的原理相似。
HttpServlet extends GenericServlet implements java.io.Serializable
GenericServlet extends Object implements Servlet , ServletConfig , java.io.Serializable
HttpServletRequest HttpServletResponse两个接口分别继承于(接口继承哦)Servlet Request、SevlettResponse,具体的有请求产生WEB容器会实现HttpServletRequest HttpServletResponse这两个接口,产生HttpServletRequest 和 HttpServletResponse对象。
取得HTTP请求内容(Request)
javax.servlet.ServletRequest 接口定义了下列主要方法:
1.用来读取Servlet的请求内容String getParameter(String anme) ,取得特定参数的"值"String [] ;2.getParameterValues(String name) 取得特定参数的多个"值";
3.Enumeration getParameterNames() 取得所有参数名称;
4.String getRemoteAddr() 从request对象取得客户端IP地址。
5String getRemoteHost() 从request对象取得客户端主机名称。
6.int getRemotePort() 从request对象取得客户端HTTP连接端口号码。
javax.servlet.http.HttpServletRequest 接口提供下列主要方法:
1取得HTTP请求之标头(Header)资料:String getHeader(String name) 取得特定标头的"值";
2.Enumeration getHeaders(String name) 取得特定标头的多个"值";
3.Enumeration getHeaderNames() 取得所有标头名称
4RequestDispatcher getRequestDispatcher(String name) 把请求和响应转到到一个名为name的JSP或SERVLET。
5Cookie[] getCookies()取得所有Cookie的名称及内容 取得客户端Cookie资料例:Cookie[] cookie = request.getCookies() ;将Cookie数据传送至客户端,使用HttpServletResponse接口的addCookie(Cookie cookie)方法。例: String userid = request.getParameter(“userid”) ; Cookie c = new Cookie(“uid” , userid ) ; response.addCookie(c) ;
设定HTTP Servlet响应内容(Response) Bullet PONINT:BOOK<<SCWCD>> 124 125页javax.servlet.ServletResponse 接口提供的方法如下:
1.void setContentType(String type) è设定HTTP响应内容型态。
2.PrintWriter getWriter() 针对HTTP响应产生字符串数据流(text stream)。
3.ServletOutputStream getOutputStream() è针对HTTP响应产生二进制数据流(binary stream)。
javax.servlet.http.HttpServletResponse 接口提供的方法如下:
1.void setHeader(String name , String value) 设定Header , 如遇到同 name 则覆写。
2.void addHeader(String name , String value) 设定Header , 如遇到同 name 则附加。
3.void setDateHeader(String name , long date)
4.void addDateHeader(String name , long date)
5void setIntHeader(String name , int value)
6.void addIntHeader(String name , int value)
7.void sendError(int sc) 将错误信息送给客户端。
8.void sendError(int sc , String msg) 将错误信息送给客户端,再加上”自订信息”。
9.void sendRedirect(String location) 定向至其它URL。这是发生在客服端,HttpServletRequest的,getRequestDispatcher发生在服务器端。
10.void addCookie(Cookie cookie) 将Cookie加入HTTP响应。
javax.servlet.ServletConfig 提供以下方法:
1.String getInitParameter(String name) 取得Servlet起始参数的”值”。
2.Enumeration getParameterNames() 取得Servlet起始参数名称。
3.ServletContext getServletContext() è取得ServletContext对象。
4.String getServletName() 取得Servlet对象名称