• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

Servlet相关知识

开发技术 开发技术 3小时前 2次浏览

Servlet概念

Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。

servlet接口

是动态资源(动态Web页面)最原始的抽象。抽象了Servlet的整个生命周期。

GenericServlet接口

对Servlet接口做了简单实现,实现它需要实现service

HttpServlet 抽象类

对所有方法做了实现,我们一般继承这个抽象类就行了,重写doGet和doPost方法

获取请求参数

request.getParameter(String key);//获取一般参数,返回值均为String
request.getParameterValues(String key);//获取类似多选框多条value 返回值String[]

处理中文乱码问题

  • 请求:
    request.setCharacterEncoding("UTF-8");
    如果是get请求还可以使用(没试过)
    new String(name.getBytes("utf-8"));
  • 响应:
response.setCharacterEncoding("UTF-8");
response.setContentType("text/html;charset=UTF-8");

转发与重定向

1. 转发
  • 实现代码
    request.getRequestDispatcher(String url).forward(HttpServletRequest,HttpServletResponse);
2. 重定向
  • 实现代码
    response.sendRedirect(String url);

转发与重定向区别/特点(重要)

  • 转发
  1. 地址栏不会发生变化
  2. 对应1次请求
  3. 只能访问项目内的资源
  4. 可在请求域里携带数据
  • 重定向
  1. 地址栏发生变化
  2. 对应2次请求
  3. 可访问任意资源
  4. 请求域中的数据会丢失
  5. 客户端会收到302状态码
  6. 可在路径中拼接请求参数

会话Session与Cookie

  • 什么是Session?
    Session是一种记录客户状态的机制,每个客户端都有一个,相互隔离。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上。记住,Session保存在服务器上
  • 什么是Cookie?
    Cookie意为”甜饼”,是由W3C组织提出,最早由Netscape社区发展的一种机制。目前Cookie已经成为标准,所有的主流浏览器如IE、Netscape、Firefox、Opera等都支持Cookie。由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。这就是Cookie的工作原理。Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客 户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网址连同该Cookie一同提交给服务 器。服务器检查该Cookie,以此来辨认用户状态。服务器还可以根据需要修改Cookie的内容。

可以使用Cookie存储简单键值对信息,存储在浏览器本地,由服务器负责 存和取,减轻服务端保存数据的压力,这些数据,不是重要数据,通常是存储的是用户的行为偏好。典型的,比如记住账号密码 商品推荐 临时购物车 ,切记Cooke存在客户端

创建session与cookie

HttpSession session = request.getSession();

Cookie ck = new Cookie(String Cookie名(键),String Cookie值);//创建cookie
ck.setMaxAge(60*5);  //正数:存活时间 s秒 0删除cookie  负值:存在再浏览器内存中,关闭就没了
resp.addCookie(ck);//添加到响应头
Cookie的读取
Cookie[] cookies = req.getCookies();
if( cookies!=null ){
    for ( Cookie ck :cookies ){
        resp.getWriter().println(ck.getName()+":"+ ck.getValue()+":"+ck.getPath());
    }
}

— Session 与 Cookie 的关系:Session需要使用cookie作为通信凭证。

Request域与Session域存取数据
  • setAttribute( String name , Object value ) 存数据,name重复则会覆盖值
  • getAttribute( String name ) : Object 取数据
  • removeAttribute( String name ): 移除数据
    — Session 生命周期
  1. 默认 30 分钟 , 超过30分钟不操作自动过期
  2. 关闭浏览器 自动过期
  3. 执行 session.invalidate() 注销功能

ServletContext 与 全局作用域

ServletContext就是web应用中的全局上下文引用,一个网站就是一个Context, 也就是Context对应一个Web应用。在JavaWeb程序中 ServletContext 就是一个表示一个Web应用。

  • 获得ServletContext对象
    this.getServletContext();//this指的是Servlet对象
    request.getServletContext();
  • getContextPath() 获得网站上下文路径
  • getRealPath() 获得网站实际发布路径
  • 读取web配置文件里的信息
    web.xml
<context-param>
  <param-name>OS</param-name>
  <param-value>Windows7</param-value>
</context-param>
<context-param>
  <param-name>Java</param-name>
  <param-value>123</param-value>
</context-param>

获取方法:getInitParameter(String name) : String ;

 String os = context.getInitParameter("OS");
 String os = context.getInitParameter("Java");

三大作用域

HttpServletRequest : 请求域: 生命周期同request对象。转发传值。
HttpSession: 会话域:每个浏览器的空间,用于保存用户 状态信息。比如用户标识
ServletContext: 全局域,整个网站的空间,保存全局信息,比如网站的配置信息。


程序员灯塔
转载请注明原文链接:Servlet相关知识
喜欢 (0)