• Servlet生命周期、常用提交方式、中文乱码问题、重定向和请求转发


    //当前工作空间绝对路径
    System.getProperty("user.dir");

    一个Servlet的生命周期由 实例化,初始化,提供服务,销毁,被回收 几个步骤组成
    Serlvet构造方法 只会执行一次,所以Serlvet是单实例的
    init初始化 只会执行一次
       
       在如下几种情况下,会调用destroy()
     
    1. 该Servlet所在的web应用重新启动
    2. 关闭tomcat的时候 destroy()方法会被调用

    提交方式:

       哪些是get方式?

    form默认的提交方式
    如果通过一个超链访问某个地址
    如果在地址栏直接输入某个地址
    ajax指定使用get方式的时候

       哪些是post方式?

    在form上显示设置 method="post"的时候
    ajax指定post方式的时候

    Http中get和post请求的区别

    Http基本的四种请求方式get、post、put、delete对应资源的查、改、增、删,get一般用于获取/查询信息,而post一般用于更新数据.

    1. Get请求的数据会显示在URL(资源描述符)后面,而post不会
    2. Get请求的类型只能是文本、字符串,长度只能是255个字节;post请求类型没有限制也可以是二进制数据,长度也没有限制
    3. Get不安全,post安全
    4. Get可以在客户端缓存,post不能缓存


    service()

    LoginServlet继承了HttpServlet,同时也继承了一个方法:service(HttpServletRequest 。
    在执行doGet()或者doPost()之前,都会先执行service(),由service()方法进行判断,到底该调用doGet()还是doPost() HttpServletResponse )

    有时候也会直接重写service()方法,在其中提供相应的服务,就不用区分到底是get还是post了。
    比如把登录的LoginServlet,改为提供service方法,也可以达到相同的效果。


    Servlet 的中文问题

    // 接收的消息的字符集定义为utf-8
    request.setCharacterEncoding("utf-8");
    // 返回的响应消息的字符集定义为utf-8
    response.setCharacterEncoding("utf-8");
    // 返回的消息的格式定义为html,同时页面的字符集也设置为utf-8
    response.setHeader("content-type", "text/html;charset=utf-8");


    跳转


    服务端跳转,请求转发

    request.getRequestDispatcher("test.html(网页)").forward(request, response);
    include方法则是包含模式,当前servlet中输出的内容依然存在
    request.getRequestDispatcher("test2.html(网页)").include(request, response);
    服务端跳转,浏览器的地址不会变

    客户端跳转,重定向: 302状态码 

    浏览器地址发生变化
    302 表示临时跳转
    response.sendRedirect("fail.html");
    301 表示永久性跳转
    response.setStatus(301);
    response.setHeader("Location", "fail.html");
    301和302的区别主要在搜索引擎对页面排名的时候有影响,这是属于SEO范畴的概念

    重定向与请求转发的区别

    重定向  

    两次请求两次相应 

    URL地址改变 

    可以跨域(跨服务器)  

    请求转发

    一次请求一次响应,效率更高

    URL地址不变

    不能跨域

  • 相关阅读:
    圣杯局部和双飞翼布局
    解决css英文换行问题
    存在即合理--字体样式大全
    存在即合理---个别软件下载
    sublime Text3常见插件汇总
    省略的方法
    JS数组方法与python列表方法的比较
    vue中数据改变,强制视图更新,视图不更新的原因和解决办法
    Vue通信
    路由的缓存
  • 原文地址:https://www.cnblogs.com/snzd9958/p/10098907.html
Copyright © 2020-2023  润新知