Java每日5问(第23天)

说出 Servlet 的生命周期,并说出 Servlet 和 CGI 的区别?

Web 容器加载 Servlet 并将其实例化后,Servlet 生命周期开始,容器运行其 init 方法进行Servlet 的初始化,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其 destroy 方法。与 cgi 的区别在于 servlet 处于服务器进程中,它通过多线程方式运行其 service 方法,一个实例可以服务于多个请求,并且其实例一般不会销毁,而 CGI 对每个请求都产生新的进程, 服务完成后就销毁,所以效率上低于 servlet。

如何防止表单重复提交?

针对于重复提交的整体解决方案:
1.用 redirect(重定向)来解决重复提交的问题2.点击一次之后,按钮失效
3. 通过 loading(Loading 原理是在点击提交时,生成 Loading 样式,在提交完成之后隐藏该样式)
4. 自定义重复提交过滤器

request 作用?

1、获取请求参数 getParameter()
2、获取当前 Web 应用的虚拟路径 getContextPath
3、转发 getRequestDispatcher(路径).forward(request,response); 4、它还是一个域对象

get 请求中文乱码?

1、乱码的根本原因:
浏览器的编码方式 UTF-8 和 服务器的解码方式 ISO-859-1 不一样
2、解决方法:

  1. 第一种方式 使用 URLEncoder 和 URLDecoder 两个类 编解码。先以 iso-8895-1 进行编码,然后再以 utf-8 进行解码
  2. 第二种方式 使用 String 类的方法进行编解码
  3. 第三种方式 更改 server.xml 配置文件。
    GET 请求是在URL 地址栏中传递请求参数的,它会被 Tomcat 服务器自动解码,而 Tomcat
    服务器默认的字符集也是 ISO-8859-1,
    所以我们需要修改 Tomcat 服务器的字符集为 UTF-8。

post 请求中文乱码问题?

1、post 请求方式乱码的原因是:因为 post 是以二进制流的形式发送到的服务器。服务器收到数据后。默认以 iso-8859-1 进行编码。
2、post 请求乱码解决,只需要在获取请求参数之前调用
request.setCharacterEncoding(“UTF-8”); 方法设置字符集 即可。

猜你喜欢

转载自blog.csdn.net/qq_39899164/article/details/107048727