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