JavaWeb--Servlet基础
什么是ServletServlet = Server + appletServer:服务器applet:小程序Servlet 含义是服务器端的小程序Servlet 是JavaWeb三大组件,三大组件分别是 Servlet Filter ListenerServlet是运行在服务器上的一个java小程序,可以接受客户端发送过来的请求,并响应数据给客户端。生命周期执行Servlet构造方法执行init
·
什么是Servlet
Servlet = Server + applet
Server:服务器
applet:小程序
Servlet 含义是服务器端的小程序
Servlet 是JavaWeb三大组件,三大组件分别是 Servlet Filter Listener
Servlet是运行在服务器上的一个java小程序,可以接受客户端发送过来的请求,并响应数据给客户端。
生命周期
- 执行Servlet构造方法
- 执行init初始化 (1、2 是第一次访问的时候创建Servlet程序会调用)
- 执行service方法 (每次执行都会被调用)
- 执行destroy销毁方法 (在web工程停止的时候调用)
- Servlet实现tomcat只会创建一个,所有的请求都是这个实例去响应
- 默认情况下,第一次请求时,tomcat才会去实例化,初始化,然后再服务, 提高系统启动速度
启动时机
默认是第一次接受请求时,实例化,初始化
我们可以通过来设置Servlet启动的先后顺序,数字越小,启动越靠前,最小值 0
小结
Servlet 在容器中是单例的,线程不安全的
- 单例: 所有的请求都是同一个实例去响应
- 线程不安全: 一个线程需要根据这个实例中的某个成员变量值去做逻辑判断,但是中间某个时机,另一个线程改变了这个成员变量的值,从而导致第一个线程的执行路径发生了变化
- 尽量不要在Servlet中定义成员变量,如果不得不定义成员变量,那么不要去:不要去修改成员变量的值。 不要根据成员变量的值做一些逻辑判断。
继承关系
javax.servlet.Servlet接口
javax.servlet.GenericServlet抽象类
javax.servlet.http.httpServlet
相关方法
- init()
- service()
- destroy()
服务方法
- 当有请求时,Servlet方法会自动相应(其实是tomcat容器调用的)
- 在HttpServlet中我们会去分析请求的方式:到底是get post delete 等等
- 然后再决定调用哪个do开头的方法
- 那么在HttpServlet中这些do方法默认都是405的实现风格-要我们子类去实现对应的方法,否则默认报错
- 因此,我们在新建Servlet时,我们才会去考虑请求方法,从而决定重写哪个do方法。
设置编码:
tomcat8之前,设置编码
- get请求:
//get方式目前不需要设置编码
String name = req.getParameter("name");
//将字符串打散为字节数组
byte[] bytes = name.getBytes("ISO-8895-1");
//将字节数组按照设定的编码重新组装成字符串
name = new String(bytes,"UTF-8");
-
post请求:
-
只需要一句,但是设置编码这一句代码必须放在所有获取参数动作之前
req.setCharacterEncoding("UTF-8");
更多推荐
已为社区贡献1条内容
所有评论(0)