• 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");

  • 相关阅读:
    推荐系统的常用算法原理和实现
    Maven入门教程
    JAVA设计模式(三)建造者模式
    Java并发编程核心方法与框架-Future和Callable的使用
    Java并发编程核心方法与框架-TheadPoolExecutor的使用
    Java并发编程核心方法与框架-Executors的使用
    Java并发编程核心方法与框架-phaser的使用
    Java并发编程核心方法与框架-CyclicBarrier的使用
    Java并发编程核心方法与框架-CountDownLatch的使用
    Java并发编程核心方法与框架-exchanger的使用
  • 原文地址:https://www.cnblogs.com/take-it-easy/p/12639122.html
Copyright © 2020-2023  润新知