Servlet_2

1.form 的method与Servlet中的对应,post对应doPost方法

在doPost方法中,可以通过request.getParamter取出对应的内容

2.web的映射路径

servlet中包含servlet-name和servlet-class,servlet-mapping包含servlet-name和url-pattern

3.可以用PrintWriter pw = response.getWriter();pw.println(html);进行打印

二、大概流程

1.打开一个静态的html页面,假设为login.html以post形式提交数据

2.假设用form,把账号密码提交到了/login这个路径,并且附带method = “post”

3.tomcat接收到一个新的请求后,就会到配置文件web.xml进行匹配,发现/login,

对应的Servlet类是LoginServlet,接下来的工作,基于此

4.调用无参构造函数LoginServlet()实例化一个LoginServlet

5.本次例子在实例化后调用相应的doPost方法

6.进入doPost方法后,通过request,把页面上传递来的账号和密码信息取出来

7.接着可以把html字符串设置在response上,并进行打印

8.在Servlet完成工作之后,tomcat拿到被Servlet修改过的response,根据这个response生成html 字符串,然后再通过HTTP协议,这个html字符串,回发给浏览器,浏览器再根据HTTP协议获取这个html字符串,并渲染在界面上。

三、哪些是get方式

1.form默认的方式

2.如果通过一个超链访问某个地址

3.如果在地址栏直接输入某个地址

4.ajax指定使用get方式的时候

四、哪些是post方法

1.在form上显示设置method = “post”的时候

ajax指定post方法的时候

另外:有时候也会直接重写service()方法,在其中提供相应的服务,就不用区分到底是get还是post了

五、中文问题

1.login.html中加上

<meta http-equiv = "Content-Type" content="text/html;charset = UTF-8" >

2.login.html

form的method修改为post

3.在servlet进行编码和解码

byte[] bytes = name.getBytes("ISO-8859-1");

name = new String(bytes,"UTF-8");

或者使用一句:

request.setCharacterEncoding("UTF-8");

4.返回中文的响应

response.setContentType("text/html;charset=UTF-8");

六、生命周期

一个Servlet的生命周期由实例化,初始化,提供服务,销毁,被回收几个步骤组成

七、跳转

在Servlet中进行服务端跳转的方式

request.getRequestDispatcher("success.html").forward(request,response);

客户端跳转:

response.sendRedirect("fail.html");

八、设置自启动

<load-on-startup>10<load-on-startup>

九、response

1.设置响应格式

response.setContentType("text/html");

2.设置响应编码

response.setContentType("text/html;charset=UTF-8");

response.setCharacterEncoding("UTF-8");

3.301跳转

response.setStatus(301);

response.setHeader("Location","fail.html");

4.设置不使用缓存

response.setDateHeader("Expires",0);

response.setHeader("Cache-Control","no-cache");

response.setHeader("pragma","no-cache");

原文地址:https://www.cnblogs.com/zxj-262410/p/8542704.html