Servlet学习之路day02
Servlet
Servlet 指的是一个运行在Tomcat上的Java类,可以通过Java中的代码,处理用
户的请求 并通过io流,对用户进行响应
Servlet 编写步骤:
1.编写一个类,继承自Httpservlet
2.重写父类的service方法
3.在service方法中 对用进行响应
Servlet常用操作:
// 1.设置常用操作
response.setContentType("text/html;charset=utf-8");
//2.获取用于向浏览器输出内容的 打印流
PrintWriter pw = response.getWriter();
案例
public class Servlet1 extends HttpServlet {
/*
* HttpServletRequest: 请求对象,包含了请求的信息
* HttpServletResponse: 响应对象,包含了用于响应的一系列功能。
*/
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.设置响应的文字编码
response.setContentType("text/html;charset=utf-8");
//2.获取用于向浏览器输出内容的打印流
PrintWriter pw = response.getWriter();
//io操作
pw.print("啊哈哈哈");
pw.flush();
pw.close();
}
}
通过web.xml的方式 配置映射地址:
步骤1. 将Servlet类 配置到web.xml中, 并起别名
<servlet>
<servlet-name>任意标识符别名</servler-name>
<servlet-class>包名.类名</servlet-class>
</servlet>
步骤2. 给指定别名的servlet,添加映射的地址(注意:这里指的是添加 而不是设置!可以添加多个)
<servlet-mapping>
<servlet-name>已指定的别名</servlert-name>
<url-pattern>/映射地址</url-patter>
</servlet-mapping>
Servlet生命周期
Servlet在tomcat中 是单例存在的,只会创建一个对象,这个对象的生命周期,存在三个Java方法的体现:
1.init:当Servlet初始化完毕时,自动执行!
默认情况下,当用户第一次访问此Servlet时,对象被创建后续访问重复利用此对象!一般我们在这里进行一些资源的初始化操作!
2.service:当用户请求时,此方法自动执行!
此方法每次执行 都在一个新的线程中!
3.destroy:当Servlet即将被销毁时,自动执行!
当服务器被关闭 或 应用被卸载时,会销毁此对象! 一般用于释放一些资源!
doGet方法 & doPost方法
我们一般重写doGet方法 处理get请求。
重写doPost方法,处理post请求。
常见的出发GET请求的方式:
1.点击超链接跳转。
2.浏览器输入网址后回车。
3.表单提交时,提交方式为GET。
4.通过js操作window。location.href进行修改地址
5.通过后续学习的Ajax技术的GET请求
常见的出发PSOT请求方式:
1.表单提交时,提交方式为POST;
2.后续学习的Ajax技术的POST请求;
GET请求和POST请求的区别*****
GET请求:
- 请求的数据 以键值对的形式 在网址中拼接
- 储能传输字符串数据
- 可传输的数据量有限,网址大小不能超过2048b
- 数据不安全
- 效率较高
POST请求:
- 请求的数据 以键值对的形式 在请求体中存储
- 可以传输任意类型的数据(文件上传只能使用POST完成)
- 理论上,可传输的数据是无限制的!
- 数据较为安全
- 效率较低
如何接受用户请求的参数***
1.接受单个请求参数(String)
String value = request.getParamaeter(String key);
2.接受一组请求参数(String[])
String[] values = request.getParamaterValues(String key);
请求参数乱码问题*****
tomcat8版本 解决了GET请求时 乱码的问题,POST请求依然是乱码的!
请求是指浏览器给你发数据乱码。
方法一:
解决所有乱码问题:(tomcat早期版本乱码问题/POST请求乱码问题)
原理: 将乱码的文字,按照乱码的编码打碎成字节数组,再按照正确的编码组装为字符串即可!
步骤: 1.将接受到的文字字符串,按照ISO-8859-1编码 打碎
byte[] bytes = 乱码文字.getBytes("ISO-8859-1");
2.将字节数组,按照正确的编码重新组装为文字
String 正常文本 = new String(byte,"UTF-8");
简洁写法:
String 正常文本 = new String(乱码文字.getBytes("ISO-8859-1"),"UTF-8");
方法二:
进用于解决POST乱码问题,用于在数据获取之前,调整请求体的编码格式!
(建议写在doPost)方法第一行
requset.setCharacterEncoding("UTF-8");
响应时 乱码问题*****
处理相应乱码时,GET请求与POST请求方法一致!
方法一:
设置网页内容类型,并设置编码格式
response.setContentType("text/html;charset=utf-8");
方法二:
仅仅用于设置编码格式,使用方法2 可能导致浏览器打开依然乱码!
response.setCharacterEncoding("utf-8");