Servlet 是一种服务器端的 Java 应用程序,具有独立于平台和协议的特性,可以生成动
态的 Web 页面。它担当客户请求(Web
浏览器或其他 HTTP 客户程序)与服务器响应(HTTP
服务器上的数据库或应用程序)的中间层。
Servlet 由 Web 服务器进行加载,该
Web 服务器必须包含支持 Servlet的 Java 虚拟机。
---------------------------------------------------------------------------------------------------------------------------
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
publicclassSampleextendsHttpServlet{
publicvoid doGet(HttpServletRequest request,HttpServletResponse response) throwsServletException,IOException
{ // 使用"request"读取和请求有关的信息(比如 Cookies) 和表单数据
// 使用"response"指定 HTTP 应答状态代码和应答头(比如指定内容类型,设置 Cookie)
PrintWriter out = response.getWriter();// 使用 "out"把应答内容发送到浏览器
}
}
如果某个类要成为 Servlet,则它应该从 HttpServlet 继承,根据数据是通过 GET 还是POST 发送,覆盖 doGet、doPost
方法之一或全部。doGet 和 doPost 方法都有两个参数,分别为 HttpServletRequest 类型和 HttpServletResponse
类型。
HttpServletRequest 定义 public interface HttpServletRequest extends ServletRequest; 用来处理一个对Servlet的HTTP格式的请求信息。 方法
1.协议
getMethod() getProtocol() getScheme() |
2.客户信息 getRemoteAddr() getRemoteHost() getRemotePort() getRemoteUser() |
3.请求URL getContextPath() getPathInfo() getPathTranslated() getQueryString() getRequestURI() getRequestURL() getServletPath() getRealPath() |
4、头 getDateHeader() getHeader() getHeaderNames() getHeaders() getIntHeader() |
5、Cookie getCookie() | 6、会话 getRequestSessoinId() getSession() isRequestedSessionIdFromCookie() isRequestedSessionIdFromURL() isRequestedSessionIdValid() |
7、安全 getAuthType() getRemoteUser() getUserPrincipal() isUserInRole() isSecure() | 8、国际化 getCharacterEncoding() getLocale() getLocals() setCharacterEncoding() |
9、输入数据 getContentLength() getContentType() getInputStream() getParameter() getParameterMap() getParameterNames() getParameterValues() getReader() | 10、服务器信息
getRequestDispatcher() getServerName() getServerPort() |
11、属性 getAttribute() getAttributeNames() removeAttribute() setAttribute() |
1、getAuthType
public String
getAuthType();
返回这个请求的身份验证模式。
2、getCookies
public Cookie[]
getCookies();
返回一个数组,该数组包含这个请求中当前的所有cookie。如果这个请求中没有cookie,返回一个空数组。
3、getDateHeader
public
long getDateHeader(String
name);
返回指定的请求头域的值,这个值被转换成一个反映自1970-1-1日(GMT)以来的精确到毫秒的长整数。
如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。
4、getHeader
public
String getHeader(String
name);
返回一个请求头域的值。(译者注:与上一个方法不同的是,该方法返回一个字符串)
如果这个请求头域不存在,这个方法返回-1。
5、getHeaderNames
public
Enumeration
getHeaderNames();
该方法返回一个String对象的列表,该列表反映请求的所有头域名。
有的引擎可能不允许通过这种方法访问头域,在这种情况下,这个方法返回一个空的列表。
6、getIntHeader
public
int getIntHeader(String
name);
返回指定的请求头域的值,这个值被转换成一个整数。
如果头域不能转换,抛出一个IllegalArgumentException。如果这个请求头域不存在,这个方法返回-1。
7、getMethod
public
String
getMethod();
返回这个请求使用的HTTP方法(例如:GET、POST、PUT)
8、getPathInfo
public
String
getPathInfo();
这个方法返回在这个请求的URL的Servlet路径之后的请求URL的额外的路径信息。如果这个请求URL包括一个查询字符串,在返回值内将不包括这个查询字符串。这个路径在返回之前必须经过URL解码。如果在这个请求的URL的Servlet路径之后没有路径信息。这个方法返回空值。
9、getPathTranslated
public
String
getPathTranslated();
这个方法获得这个请求的URL的Servlet路径之后的额外的路径信息,并将它转换成一个真实的路径。在进行转换前,这个请求的URL必须经过URL解码。如果在这个URL的Servlet路径之后没有附加路径信息。这个方法返回空值。
10、getQueryString
public
String
getQueryString();
返回这个请求URL所包含的查询字符串。一个查询字串符在一个URL中由一个“?”引出。如果没有查询字符串,这个方法返回空值。
11、getRemoteUser
public
String
getRemoteUser
返回作了请求的用户名,这个信息用来作HTTP用户论证。
如果在请求中没有用户名信息,这个方法返回空值。
12、getRequestedSessionId
public
String getRequestedSessionId();
返回这个请求相应的session id。如果由于某种原因客户端提供的session
id是无效的,这个session id将与在当前session中的session
id不同,与此同时,将建立一个新的session。
如果这个请求没与一个session关联,这个方法返回空值。
13、getRequestURI
public
String
getRequestURI();
从HTTP请求的第一行返回请求的URL中定义被请求的资源的部分。如果有一个查询字符串存在,这个查询字符串将不包括在返回值当中。例如,一个请求通过/catalog/books?id=1这样的URL路径访问,这个方法将返回/catalog/books。这个方法的返回值包括了Servlet路径和路径信息。
如果这个URL路径中的的一部分经过了URL编码,这个方法的返回值在返回之前必须经过解码。
14、getServletPath
public
String
getServletPath();
这个方法返回请求URL反映调用Servlet的部分。例如,一个Servlet被映射到/catalog/summer这个URL路径,而一个请求使用了/catalog/summer/casual这样的路径。所谓的反映调用Servlet的部分就是指/catalog/summer。
如果这个Servlet不是通过路径匹配来调用。这个方法将返回一个空值。
15、getSession
public
HttpSession getSession();
public HttpSession getSession(boolean
create);
返回与这个请求关联的当前的有效的session。如果调用这个方法时没带参数,那么在没有session与这个请求关联的情况下,将会新建一个session。如果调用这个方法时带入了一个布尔型的参数,只有当这个参数为真时,session才会被建立。
为了确保session能够被完全维持。Servlet开发者必须在响应被提交之前调用该方法。
如果带入的参数为假,而且没有session与这个请求关联。这个方法会返回空值。
16、isRequestedSessionIdValid
public
boolean
isRequestedSessionIdValid();
这个方法检查与此请求关联的session当前是不是有效。如果当前请求中使用的session无效,它将不能通过getSession方法返回。
17、isRequestedSessionIdFromCookie
public
boolean isRequestedSessionIdFromCookie();
如果这个请求的session
id是通过客户端的一个cookie提供的,该方法返回真,否则返回假。
18、isRequestedSessionIdFromURL
public
boolean isRequestedSessionIdFromURL();
如果这个请求的session
id是通过客户端的URL的一部分提供的,该方法返回真,否则返回假。请注意此方法与isRequestedSessionIdFromUrl在URL的拼写上不同。
以下方法将被取消
19、isRequestedSessionIdFromUrl
public
boolean
isRequestedSessionIdFromUrl();
该方法被isRequestedSessionIdFromURL代替。
HttpServletResponse
1、缓冲器 flushBuffer() getBufferSize() isCommited() reset() setBufferSize()
2、响应URL encodeRedirectUrl() encodeRedirectURL() encodeURL() sendRedirect()
3、头 addHeader() addDateHeader() addIntHeader() containsHeader() setDateHeader() setHeader() setIntHeader()
4、Cookie addCookie()
5、国际化 getCharacterEncoding getLocale() getLocals()
6、输出数据 setContentLength() setContentType() getOutputStream() getWriter()
7、状态和错误 sendError() setStatus()