servlet学习笔记
2016-09-01 15:18
211 查看
javac编译打包java文件命令:javac -d . java文件名
1、Web容器:
Web容器是Servlet/JSP唯一认得的HTTP服务器。
何谓web容器:
对于java程序而言,jvm是其操作系统,.java文件会编译为.class文件,.class对于jvm而言,就是其可执行文件。java
程序基本上只认得一种操作系统,就是jvm。就如同jvm介于java程序与实体操作系统之间,web容器是介于实体http服务器与
servlet之间,也正如编写java程序必须了解jvm与应用程序之间如何互动,编写servlet/jsp也必须知道web容器如何servlet
/jsp互动,如何管理servlet等事实(jsp最后也是转译、编译、加载为servlet,在容器的世界中,真正负责请求、响应的是
servlet)。
2、开发servlet有三种方法:
1)、实现servlet接口
2)、继承GenericServlet
3)、继承HttpServlet
3、请求/响应流程:
1)、客户端(大部分情况下是浏览器)对Web服务器发出HTTP请求;
2)、HTTP服务器收到HTTP请求,将请求转由Web容器处理,Web容器会剖析HTTP请求内容,创建各种对象(如HttpServletRequest、HttpServletResponse、HttpSession等);
3)、Web容器由请求的URL决定要使用哪个Servlet来处理请求(事先由开发人员定义);
4)、Servlet根据请求对象(HttpServletRequest)的信息决定如何处理,通过响应对象(HttpServletResponse)来创建响应;
5)、Web容器与HTTP服务器沟通,Web服务器将响应转换为HTTP响应并传回客户端。
注意:如果有多次请求进来,就只是启动多个线程来进行处理,而不是重复启动多次JVM。
4、servlet的运行过程
servlet程序是由web服务器调用,web服务器收到客户端的servlet请求后:
1)、web服务器首先检查是否已经装载并创建了该servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步;
2)、装载并创建该servlet的一个实例对象;
3)、调用servlet实例对象的init()方法;
4)、创建一个用于封装http请求消息的HttpServletRequest对象和一个代表http响应消息的HttpServletResponse对象,然后调
用Servlet的service()方法并将请求和响应对象作为参数传递进去;
5)、web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
注意:以下情况会导致destory()方法调用:
1)、tomcat重新启动
2)、reload该webapp
3)、重新启动电脑
5、servlet开发的缺点:
1)、在web.xml文件中需要配置很多行代码,维护起来很不方便,不利于团队合作;
2)、一个servlet的入口只有一个doPost或者doGet方法,如果在一个servlet中写好几个方法,怎么办?
这样会导致代码结构很乱;
3)、servlet类与web容器高度耦合,每个方法中都有两个参数request、response,如果服务器不启动,这两个参数没有办法
初始化;
4)、如果在servlet中的一个方法中有很多功能,这个时候会导致该方法比较复杂,不利于维护
doGet(){
用户注册
//用户头像上传
//验证表单
//权限的验证
//注册
}
用户注册完成了4件事情,所以整个方法比较杂乱;
5)、如果一个servlet类中有很多方法,浏览器对这些方法进行请求,url写起来很麻烦;
http://localhost:8080/servlet/userServlet?method=save/update
6)、在servlet中如果要获取页面上表单中的数据,那么在方法中会写很多行。
6、servlet工作的时序图:
这个图只截了一部分,前面还有浏览器请求过程和服务器拿到请求后进行解析的过程。
1、Web容器:
Web容器是Servlet/JSP唯一认得的HTTP服务器。
何谓web容器:
对于java程序而言,jvm是其操作系统,.java文件会编译为.class文件,.class对于jvm而言,就是其可执行文件。java
程序基本上只认得一种操作系统,就是jvm。就如同jvm介于java程序与实体操作系统之间,web容器是介于实体http服务器与
servlet之间,也正如编写java程序必须了解jvm与应用程序之间如何互动,编写servlet/jsp也必须知道web容器如何servlet
/jsp互动,如何管理servlet等事实(jsp最后也是转译、编译、加载为servlet,在容器的世界中,真正负责请求、响应的是
servlet)。
2、开发servlet有三种方法:
1)、实现servlet接口
2)、继承GenericServlet
3)、继承HttpServlet
3、请求/响应流程:
1)、客户端(大部分情况下是浏览器)对Web服务器发出HTTP请求;
2)、HTTP服务器收到HTTP请求,将请求转由Web容器处理,Web容器会剖析HTTP请求内容,创建各种对象(如HttpServletRequest、HttpServletResponse、HttpSession等);
3)、Web容器由请求的URL决定要使用哪个Servlet来处理请求(事先由开发人员定义);
4)、Servlet根据请求对象(HttpServletRequest)的信息决定如何处理,通过响应对象(HttpServletResponse)来创建响应;
5)、Web容器与HTTP服务器沟通,Web服务器将响应转换为HTTP响应并传回客户端。
注意:如果有多次请求进来,就只是启动多个线程来进行处理,而不是重复启动多次JVM。
4、servlet的运行过程
servlet程序是由web服务器调用,web服务器收到客户端的servlet请求后:
1)、web服务器首先检查是否已经装载并创建了该servlet的实例对象。如果是,则直接执行第4步,否则,执行第2步;
2)、装载并创建该servlet的一个实例对象;
3)、调用servlet实例对象的init()方法;
4)、创建一个用于封装http请求消息的HttpServletRequest对象和一个代表http响应消息的HttpServletResponse对象,然后调
用Servlet的service()方法并将请求和响应对象作为参数传递进去;
5)、web应用程序被停止或重新启动之前,Servlet引擎将卸载Servlet,并在卸载之前调用Servlet的destroy()方法。
注意:以下情况会导致destory()方法调用:
1)、tomcat重新启动
2)、reload该webapp
3)、重新启动电脑
5、servlet开发的缺点:
1)、在web.xml文件中需要配置很多行代码,维护起来很不方便,不利于团队合作;
2)、一个servlet的入口只有一个doPost或者doGet方法,如果在一个servlet中写好几个方法,怎么办?
public class UserServlet extends HttpServlet{ doPost(){ this.doGet(); } doGet(){ if(request.getParameter("method").equals("save")){ this.save(); }else{ this.update(); } } private void save(){ } private void update(){ } }
这样会导致代码结构很乱;
3)、servlet类与web容器高度耦合,每个方法中都有两个参数request、response,如果服务器不启动,这两个参数没有办法
初始化;
4)、如果在servlet中的一个方法中有很多功能,这个时候会导致该方法比较复杂,不利于维护
doGet(){
用户注册
//用户头像上传
//验证表单
//权限的验证
//注册
}
用户注册完成了4件事情,所以整个方法比较杂乱;
5)、如果一个servlet类中有很多方法,浏览器对这些方法进行请求,url写起来很麻烦;
http://localhost:8080/servlet/userServlet?method=save/update
6)、在servlet中如果要获取页面上表单中的数据,那么在方法中会写很多行。
6、servlet工作的时序图:
这个图只截了一部分,前面还有浏览器请求过程和服务器拿到请求后进行解析的过程。
相关文章推荐
- Servlet学习笔记(二)-----计数器实例
- Servlet学习笔记(四)-----使用Servlet处理用户注册和登陆
- Jsp&Servelet 学习笔记- 在tomcat上部署一个单独的servlet的程序(Ant)
- Jsp&Servelet 学习笔记-对一个Servlet创建多个Mapping
- Head First Servlet/JSP 学习笔记(1)
- 学习EJB for JBoss3.2笔记(3)测试servlet
- Jsp&Servelet 学习笔记-映射静态的内容到一个servlet中
- Jsp&Servelet 学习笔记- 在Tomcat中的servlet.xml使用Context元素
- servlet 学习笔记(1)
- Servlet学习笔记
- Java开发学习笔记之四:Servlet生命周期
- Java开发学习笔记之二:一个简单的Servlet
- Jsp&Servelet 学习笔记- 映射一个Servlet实名到web.xml中
- Java开发学习笔记之八:servlet之间的协作
- Servlet学习笔记(三)-----用HTML页面访问Servlet
- JAVA WEB学习笔记-Servlet过滤器
- Java开发学习笔记之六:servlet-处理客户form数据
- JSP和SERVLET学习笔记
- Jsp&Servelet 学习笔记- 为Servlet创建一个JSP类型的URL
- Servlet 与 Jsp核心编程 卷一 学习笔记 01