来源:weixin_42010394 发布时间:2018-11-14 10:59:13 阅读量:1172
一 Servlet
1.1通过实现接口方法实现Servlet
public class AServlet implements Servlet{
//销毁时被调用
public void destroy() {
System.out.println("我销毁了");
}
//获取Servlet的配置信息
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
//获取Servlet的介绍信息
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
//创建时被调用
public void init(ServletConfig arg0) throws ServletException {
System.out.println("我创建了");
}
//请求时被调用
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
System.out.println("我处理请求");
}
}
1.2 ServletConfig
ServletConfig表示Servlet的配置信息
常用方法:
String getServletName():获取Servlet的名称
ServletContext getServletContext():获取Servlet的上下文(三大域,详情见后)
Enumeration getInitParameterNames():获取所有初始化参数的名称
String getInitParameter(String name):根据配置名称获取对应的值
引入Enumeration,这个类似于Iterator(迭代器),两个方法,boolean hasMoreElements(); E nextElemenet()
1.3 ServletContext
Servlet的上下文,用来共享数据/传递数据
服务端三大域:ServletContext(或者application)
Request
Session
介绍几种方法:
Object getAttribute(String name):获取指定name的值
void setAttribute(String name,Object obj):往域中存指定名称的值
void removeArrtibute(String name):去域中指定的值
String getContextPath():获取当前项目的路径
String getRealPath():获取真实路径
Enumeration getInitParameterNames():获取所有初始化参数的名称
String getInitParameter(String name):根据配置名称获取对应的值
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
ServletContext sc=this.getServletContext();
sc.setAttribute("name", "Tom");
System.out.println(sc.getAttribute("name"));
System.out.println(sc.getContextPath());
System.out.println(sc.getRealPath("User.jsp"));
System.out.println("-------------------------------");
Enumeration<String> enu = sc.getAttributeNames();
while(enu.hasMoreElements()){
String text = enu.nextElement();
System.out.println(text+"====="+sc.getInitParameter(text));
}
}
1.4 HttpServlet
与协议有关,在Http下运行
注意:Servlet是单例的,可以会出现线程安全问题;尽量不要创建有状态的成员变量,如果非要创建,一定要保证只读
二 服务端响应
HttpServletResponse
2.1 与状态码相关
void setStatus(int sc):向客户端返回响应的状态码
void setStatus(int sc,String name):返回状态码和服务端提示信息
void sendError(int sc):返回错误码
void sendError(int sc,String name):返回错误状态码和提示信息
状态码简介:1代表请求未完成;2代表成功;3表示中转;4表示客户端错误;5表示服务端内部错误
2.2 与响应头相关
void setHeader(String name,String value):设置单值响应头
void addHeader(String name,String value):添加多值响应头信息
2.3 服务端响应内容相关
PrintWriter getWriter():返回字符输出流,向客户端写数据
ServletOutputStream getOutputStream():返回字节输出流
三 客服端请求
HttpServletRequest:封装了客户端的请求信息,如请求URL,请求协议,请求参数
String getMethod():获取请求方式
String getLocalAddr():获取本地路径
String getLocalName():获取本地名称
String getRemoteAddr():获取远程请求地址
String getRemoteUser():获取远程请求用户
String getRemoteHost():获取远程主机
int getRemotePort():获取远程端口号
int getLocalPort():获取本地端口号
String getProtocol():获取协议版本
String getScheme():获取协议
String getQueryString():获取请求参数
String getRequestURI():获取请求资源
StringBuffer getRequestURL():获取请求路径
URI和URL的区别?
URI:统一资源标识符,标志网络上的一个资源,如图片,视频音频等
URL:统一资源定位符,专制网址
---------------------