首页 > 其他 > 详细

关于Servlet的一些归纳(2)

时间:2019-04-26 22:35:38      阅读:151      评论:0      收藏:0      [点我收藏+]

1、web项目结构

根路径:

  文件夹

  文件

  WEB-INF:

    lib(存放一些jar文件)

    classes(存放class文件)

    web.xml

2、GenericServlet类

  实现了Servlet接口,并重写了其中除service()方法之外的其他四个方法

3、HTTP协议

  HTTP:Hyper Text Transfer Protocol  超文本传输协议,请求响应的无状态协议

  HTTP协议是无状态的,如果需要保持状态,有几种解决方案?

  1)HttpSession

  2)Cookie

  3)URL重写

4、请求头报文格式

  1)GET  路径 协议

       请求头

       空行

       代码

  2)POST 路径 协议

     请求头

        空行

      数据

5、响应头的报文格式

  协议   状态码  信息

  响应头

  空行

  页面内容

6、HttpServlet类

  继承字GenericServlet抽象类

  重写service方法,新增doGet方法跟doPost方法,根据提交方式决定调用doGet或是doPost方法

7、HttpServletRequest接口(继承自ServletRequest接口)

  Http://localhost:8080/test/index.jsp?a=1&b=2

  String getContextPath() 项目根路径/test

  String getRequestURI() /test/index.jsp

  String getRequestURL() Http://localhost:8080/test/index.jsp

  String getQueryString() a=1&b=2

  Enumeration<String> headerNames = request.getHeaderNames();

    while(headerNames.hasMoreElements())

    {

      String headerName = headNames.nextElement();

    }

  String getHeader(String headerName)

  String getHeader(referer)  连接来路

  HttpSession getSession()

  Cookie getCookie()

  String getMethod()获取提交方式post get

 

8、HttpServletResponse接口(继承自ServletResponse)

  //是指浏览器不缓存

  response.addHeader("Pragme","no-cache");

  response.addheader("Cache-Control","no-cache");

  response.addheader("Expires","0");

 

  html可以通过mete设置页面不缓存

  <mete http-equiv="pragma" content="no-cache">

  <mete http-equiv="cache-control" content="no-cache">

  <mete http-equiv="expires" content="0">

 

  重定向 void sendRedirect(String path)

  面试题:重定向跟转发的区别,分别通过什么来共享数据

  转发:一次请求,一次响应,服务器直接跳转页面,不管转发多少次都是一个请求,可以通过request来请求共享数据,浏览器地址栏路径不变

  重定向:两次请求 两次响应 第一次请求结束后,服务器给客户端返回状态代码302(资源转移),通过响应头设置location告诉浏览器一个路径,浏览器马上发起第二次请求,请求location制定的地址,处理后返回响应,浏览器地址栏地址变为第二次请求的地址,不能通过request来共享数据

  转发和重定向都可以通过session application来共享数据

 

9、HttpSession接口

  针对一个用户跨页面共享数据

  void setAttribute(String name,Object values)

  Object getAttribute(String name)

  void removeAttribute(String name)

 

  String getId() 获得session的id,id存放在客户端的浏览器内存中,通过响应头跟请求头中来回传递

  void setMaxInactiveInterval(int seconds) 设置不活动的时间间隔,即session的过期时间

  void invalidate()设置session无效

 

  web.xml中也可以设置session的过期时间

  <sesson-config>

    <session-timeout>时间(分钟)</session-timeout>

  </session-config>

 

10、ResquestDispatcher接口

  ResquestDispatcher rd = request.getRequestDispatcher(); 可以使用相对路径,也可以使用“/”开头的绝对路径,不用加项目根路径

  ResquestDispatcher rd = this.getServletContext().getResquestDispatcher(); 必须是以“/”开头的绝对路径,不用加项目根路径

  void forward(ServletRequest request,ServletResqonse response)  转发

  void include(ServletResquest request,ServletResponse response) 包含

  

11、ServletConfig接口

  读取关于servlet的配置信息

  String getInitParameter(String name)  获取当前servlet配置的初始化参数

  String getServletName() 获得当前Servlet的名字

  ServletContext getServeltContext()

 

12、ServletContext接口

  全局共享,只有一个对象

  void setAttribute(String name,Object values);\

  Object getAttribute(String name)

  void removeAttribute(String name)

 

  大小排序:pageContext-->request-->session-->application

  

  String getRealPath(String virtualPath) 根据虚拟路径获得真实路径

  RequestDispatcher getRequestDispatcher(String path)

 

  String getInitParameter(String name)获得全局初始化配置参数

  InputStream getResouseAsStream(String path)可以根据虚拟路径直接获得输入流

 

  

  

关于Servlet的一些归纳(2)

原文:https://www.cnblogs.com/kfw5264/p/servlet2.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!