Java web的一些总结(四:关于servlet)

Posted take-it-easy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java web的一些总结(四:关于servlet)相关的知识,希望对你有一定的参考价值。

servlet是干什么的?

  • 这部分内容较为底层,可能在使用spring框架后不一定要手写,但作为基础,有必要好好了解下。
  • 是sun公司开发的,目的是开发动态web
  • 具体使用时是:在API中为我们提供了一个接口(我们一般实现HTTPServlet接口),我们需要编写一个类来实现该接口,并在这个类中处理request和response即可。

servlet运行原理

技术图片

 

 

 

在浏览器中输入请求地址后,浏览器会依据IP地址及端口号找到对应的Web服务器,如果请求的是静态资源,Web服务器直接提供响应;如果请求的是动态资源,Web服务器的通信模块会将该请求传递给Servlet容器的通信模块,Servlet容器负责创建Servlet实例,并将请求(request)中的数据解析出来传递给Servlet。在Servlet处理完数据之后,响应结果(response)也是由容器的通信模块负责返回给Web服务器。后续的Servlet的销毁及管理都由容器来负责。
 
运行流程如下:
  1. 浏览器依据IP建立与容器的连接
  2. 浏览器将请求数据打包
  3. 容器解析请求数据包,封装request和response对象
  4. 容器依据请求资源路径找到Servlet创建对象
  5. 容器将request和response对象作为参数传入service方法,并调用
  6. 容器将响应数据打包发给浏览器
  7. 浏览器取出结果,生成页面

servlet类怎么写:

public class cookies extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        PrintWriter writer = resp.getWriter();
        writer.print("hello!");
    }
    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp);
    }
}

自己写的类中:

  1. 实现了HttpServlet接口
  2. 重写了doGet和doPost方法
  3. 把doPost指向doGet就行了(doget在使用时会直接把请求参数附在url上面,doPost则不会,所以安全性提高)
  4. 在重写中提取request中信息,把response给set好

需要在web.xml里面添加映射,将url映射到写好的servlet类

hello是自己取的名称,/hello是访问时用的url,com.kuang.servlet是对应的类

技术图片

 

 

 

Tomcat的配置:类似的文章很多,要对打包的war进行一个配置

https://www.cnblogs.com/Miracle-Maker/articles/6476687.html

servlet的映射:

  1. 一个servlet指定一个映射路径
  2. 一个servlet指定多个映射路径
  3. 一个servlet指定通用映射路径(hello/*)
  4. 指定后缀或者前缀

请求转发和重定向的区别:

技术图片

 

 

 上为请求转发,下为重定向。

请求转发的httpcode任然是200,而不是代表着重定向的3xx

servletcontext:

  • context,上下文之意。这里就是让几个servlet类间可以交换信息。
  • ServletContext servletContext = this.getServletContext();
    servletContext.setAttribute("name","hahaha");

     

以上是关于Java web的一些总结(四:关于servlet)的主要内容,如果未能解决你的问题,请参考以下文章

关于servlet的一些学习总结

Java Web 学习与总结Servlet核心接口+Servlet3.0配置

关于首次利用servlet调用数据库时会产生的一些问题

java基础题目总结

[Java面试四]Strust2总结及在面试中的一些问题.

java Web 工程servlet中@WebServlet("/HelloServlet")原理