ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Servlet复习

2020-09-14 16:00:21  阅读:161  来源: 互联网

标签:请求 Servlet name 获取 String Cookie servlet 复习


> Servlet执行原理

  1. 客户端发起请求,tomcat解析请求获取访问的url

  2. Tomcat拿到url后,去web.xml中匹配servlet-mapping下的url-pattern标签中的内容,如果匹配成功,则找到相应的servlet

  3. 找到相关servlet下的servlet-class标签中的全类名,将此servlet的字节码文件加载到内存,并创建对象

  4. 调用servlet的service方法

> Servlet生命周期方法

  1. 创建:init方法,Servlet生命周期内只执行一次。默认情况下Servlet被首次访问时调用。可以通过配置让servlet在服务器启动时同时启动。

注意:servlet属于单例模式,并发访问时可能会出现线程安全。所以尽量不要对成员变量进行修改,如果有需要,请定义局部变量。

  1. 提供服务:service方法,执行多次。

  2. 销毁:服务器关闭时调用。

> Request对象方法

1.获取请求行数据

  • 获取请求方式:String getMethod()

  • 获取虚拟目录:String getContextPath()

  • 获取Servlet路径:String getServletPath()

  • 获取get方式请求参数:String getQueryString()

  • 获取请求URI:String getRequestURI()

  • 获取请求URL:StringBuffer getRequestURL()

  • 获取协议及版本:String getProtocol()

  • 获取客户机的IP地址:String getRemoteAddr()

2.获取请求头数据

  • 获取所有的请求头名称:Enumeration getHeaderNames()

  • 根据请求头名称获取请求头的值:String getHeader(String name)

3.获取请求体数据

  • 获取字符输入流:BufferedReader getReader()
  • 获取字节输入流:ServletInputStream getInputStream()

4.通用方法

  • 根据参数名称获取参数值:String getParameter(String name)
  • 根据参数名称获取参数数组:String[] getParameterValues(String name)
  • 获取请求的所有参数名称:Enumeration getParameterNames()
  • 获取所有参数的map集合:Mapper<String,String[]> getParameterMap()

5.域方法

  • setAttribute(String name, Object obj)
  • Object getAttribute(String name)
  • removeAttribute(String name)

6.获取ServletContext对象

  • ServletContext getServletContext()

> Response对象方法

1.设置响应行

  • 设置状态码:setStatus(int s)

2.设置响应头

  • setHeader(String name, String value)

3.设置响应体

  • 获取字符输出流:PrintWriter getWriter()
  • 获取字节输出流:ServletOutputStream getOutputStream()

> 请求转发和重定向

1. 请求转发

  • request.getRequestDispatcher(String path).forward(ServletRequest req,ServletResponse resp)

2. 重定向

  • response.setRedirect(String s)

> ServletContext对象

  • 概念:代表整个web应用,可以和程序的容器(服务器)进行通信。

  • 常用的功能:

    • 获取MIME类型:String getMimeType(String s)
    • 域对象,共享数据:共享范围:所有用户请求。
    • 获取文件的服务器真实路径:String getRealPath(String s)
  • 获取方式

    • 通过request对象获取
    • 通过HttpRequest获取

3.区别

请求转发 重定向
url不变 url变化
一次请求 两次请求
服务器内部跳转 跳转到不同服务器上

> 会话技术

  • 创建Cookie对象,绑定数据:new Cookie(String name, String value)
  • 发送Cookie对象:response.addCookie(Cookie cookie)
  • 拿到Cookie,获取数据:Cookie[] request.getCookies()
  • 设置Cookie存活时间:setMaxAge(int seconds):正数:存活时间。0:删除此cookie。负数:浏览器内存保存,关闭浏览器,cookie就失效。

2.Session

  • 会话对象,通过request对象可以获取session。通过set,get,remove三个方法可以存储,获取,删除session域中的数据。

  • 原理:第一次请求给会话分配一个sessionId,使用cookie的形式存储到客户端浏览器上。以后每次请求都会带上这个sessionId,以此来完成服务器端的状态保持。

  • 关于销毁:

    • 服务器关闭
    • 调用invalidate方法
    • 默认失效时间:30分钟,可以通过配置修改。

> JSP

1.jsp概念

  • jsp:java server pages:java服务器端页面,在jsp上可以写html,可以写java代码。jsp本质上是一个Servlet。方便但是增加了耦合性,可维护性也差。

2.jsp脚本

  • <% 代码 %>:写的java代码处于生成后的servlet的service方法中
  • <%! 代码 %>:写的java代码处于生成后的servlet的成员位置。
  • <%= 代码 %>:可以是一个变量或者方法,将变量或者返回值输出到页面。

3.九大内置对象

内置变量 真实类型
request HttpServletRequest
response HttpServletResponse
session HttpSession
application ServletContext
out JspWriter
pageContext PageContext
config ServletConfig
page JspPage
exception JspException

4.EL表达式

  • Expression Language:表达式语言
  • 作用:替换和简化jsp页面中java代码的书写。
  • 语法:${表达式}
  • 注意:jsp中默认支持EL表达式,可以在page指令中设置“isELIgnored=true”忽略EL表达式。
  • 使用:
    • 运算:
      • 算数运算符:+ - * /
      • 比较运算符:> < >= <= == !=
      • 逻辑运算符:&& || !
      • 空运算符:empty
        • 判断字符串,集合,数组对象是否为null并且长度是否为0
        • ${empty list}
    • 获取域中的值:${域名.键名} 从最小的域开始找
      • pageScope --> pageContext
      • requestScope --> request
      • sessionScope --> session
      • applicationScope --> application
    • 获取List集合元素

标签:请求,Servlet,name,获取,String,Cookie,servlet,复习
来源: https://www.cnblogs.com/guanlibin/p/13667214.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有