一.定义:小服务程序或者服务连接器.
二.作用:1) 处理请求 2) 返回响应
三.编写一个Servlet的步骤:
1.继承HttpServlet父类;
2.使用注解@WebServlet(urlPatterns="浏览器访问路径")
3.覆盖父类中的service方法
例:
@WebServlet(urlPatterns="/s")
public class MyServlet extends HttpServlet{
//Request:代表请求
//Response:代表响应
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//可以返回一段代码给浏览器
//在给浏览器返回代码的时候需要设置响应的字符集utf-8
resp.setContentType("text/html;charset=utf-8");
// 向resp对象对象的字符输出流中写入的html代码都会返回给浏览器
resp.getWriter().println("<html><body>你好,世界</body></html>");
}
四.浏览器如何向服务器发送请求:
语法:
http://ip地址:端口号/servlet地址?参数名1=参数值1&参数名2=参数值2...
?name=张三&pass=123 // name是参数名,张三是参数值, pass是参数名, 123 是参数值
服务器要获取请求参数:
String 请求参数的值 = request.getParameter("请求参数名");
注意:
如果某个参数没有传递,使用request.getParameter()返回的是null值
request.getParameter()返回的总是字符串,需要自己做数据类型转换
请求类型:
1) get 请求 直接通过浏览器地址发送的请求
2) post 请求
表单form既可以发送get请求,也可以发送post请求
区别: 1) get请求会把所有请求参数跟在地址栏之后,不适合发送敏感信息
而post请求不会把请求参数跟在地址栏之后
2) 不要以为post请求是安全的,通过一些网络监测工具仍然可以看到post中的参数信息
http 是不安全的,都是明文发送给服务器的
https 是安全的,会把信息发送给服务器的过程中进行加密
https 和post结合可以保证向服务器传输数据的安全性
3) get请求传输的数据有限制, post请求没有限制(任意大小的数据都可以发送给服务器)
4) get 意味着获取信息(对应查询操作)
post 意味着增,改,删等操作
对于post请求,会有中文乱码问题,解决方法是调用:req.setCharacterEncoding("utf-8");
注意: tomcat 8 已经对get请求中的中文按utf-8进行解码了, 所以程序员不需要对get请求的中文进行额外处理 tomcat 7, tomcat 6 ... 对get请求中的中文还需要特殊处理
五.servlet 的生命周期
浏览器首次向此servlet发送请求时,会创建它的实例对象;以后再发送请求使用的仍然是第一次创建的对象。
结论:整个生命周期中,servlet只有一个实例(单例的)
1) 构造方法首先执行(只执行一次)
2) 初始化方法init (只执行一次)
3) 服务方法 service (反复被执行)来一次请求执行一次
4) 销毁方法 destroy (只执行一次)在服务器停止前,或重新部署时
六. doGet与doPost
覆盖service方法,可以处理所有类型的请求
覆盖doGet方法,仅能处理get方式的请求
覆盖doPost方法,仅能处理post方式的请求
七.java web项目的文件
一个java web项目:
|-
|-WEB-INF (受保护不能直接访问)
|-classes 放自己编写的java类
|-lib 放第三方的jar包
|-css 放样式表
|-js 放js脚本
|-jsp 放网页文件
|-index.jsp 首页面 如果没有写具体的地址,会按 index.html, index.jsp