Java Servlet
2015-09-25 11:54
435 查看
一、什么是Servlet
Servlet是在服务器上运行的小程序,一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问这个驻存在服务器内存中的Servlet程序。
这里提出一个问题,Servlet和JSP?在学习J2EE的时候,初次接触了JSP(Java
ServerPages),这个Java服务器页面,是一个简化的Servlet设计,二者都是在服务端执行,然后返回客户端HTML文本。但二者的区别呢?发展的先后顺序呢?为什么?
二、生命周期
1、客户端请求该 Servlet;
2、加载 Servlet 类到内存;
3、实例化并调用init()方法初始化该Servlet;
4、执行service()方法,获得请求的信息。(根据请求方法不同调用doGet()
或者doPost(),此外还有doGet()、doPut()、doTrace()、doDelete()、doOptions());
5、destroy()销毁。
Servlet只初始化一次,它是单实例,多线程使用,所以它不是线程安全的。
三、实现过程
Servlet的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为:
1) 客户端发送请求至服务器端;
2) 服务器将请求信息发送至 Servlet;
3) Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
4) 服务器将响应返回给客户端。
四、Servlet相关包的介绍
--javax.servlet.*:存放与HTTP 协议无关的一般性Servlet 类;
--javax.servlet.http.*:除了继承javax.servlet.* 之外,并且还增加与HTTP协议有关的功能。
所有的Servlet都必须实现javax.servlet.Servlet 接口(Interface)。
若Servlet程序和HTTP协议无关,那么必须继承javax.servlet.GenericServlet类;
若Servlet程序和HTTP协议有关,那么必须继承javax.servlet.http.HttpServlet 类。
--HttpServlet:提供了一个抽象类用来创建Http Servlet。
public voiddoGet()方法:用来处理客户端发出的 GET 请求
public voiddoPost()方法:用来处理 POST请求
--javax.servlet包的接口:
ServletConfig接口:在初始化的过程中由Servlet容器使用
ServletContext接口:定义Servlet用于获取来自其容器的信息的方法
ServletRequest接口:向服务器请求信息
ServletResponse接口:响应客户端请求
--javax.servlet包的类:
ServletInputStream类:用于从客户端读取二进制数据
ServletOutputStream类:用于将二进制数据发送到客户端
--javax.servlet.http包的接口:
HttpServletRequest接口:提供Http请求信息
HttpServletResponse接口:提供Http响应
五、第一个Servlet小例子
还是习惯在IDE环境下开发,使用MyEclipse工具,建立web project。
这个小例子包括Get方式请求和Post方式请求,如果你不能区分二者,那就以浏览地址的后缀是否带参数来区分吧。我的jsp页面:
HelloServlet类
最重要的就是web配置文件的配置,我一直认为,它就是一个承上启下的连接点,把浏览器的地址URL和Servlet类关联起来。
还有必要解释一下配置文件吗?有点类似键值对key、value。根据截取浏览器中的URL,匹配<servlet-mapping>映射中的url,然后找到其对应的servlet-name。2个servlet-name其实是一个,根据name就可以找到要执行的Servlet类。
希望能给Java新手解疑答惑,继续努力!
Servlet是在服务器上运行的小程序,一个Servlet就是一个Java类,并且可以通过“请求-响应”编程模型来访问这个驻存在服务器内存中的Servlet程序。
这里提出一个问题,Servlet和JSP?在学习J2EE的时候,初次接触了JSP(Java
ServerPages),这个Java服务器页面,是一个简化的Servlet设计,二者都是在服务端执行,然后返回客户端HTML文本。但二者的区别呢?发展的先后顺序呢?为什么?
二、生命周期
1、客户端请求该 Servlet;
2、加载 Servlet 类到内存;
3、实例化并调用init()方法初始化该Servlet;
4、执行service()方法,获得请求的信息。(根据请求方法不同调用doGet()
或者doPost(),此外还有doGet()、doPut()、doTrace()、doDelete()、doOptions());
5、destroy()销毁。
Servlet只初始化一次,它是单实例,多线程使用,所以它不是线程安全的。
三、实现过程
Servlet的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容。这个过程为:
1) 客户端发送请求至服务器端;
2) 服务器将请求信息发送至 Servlet;
3) Servlet生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
4) 服务器将响应返回给客户端。
四、Servlet相关包的介绍
--javax.servlet.*:存放与HTTP 协议无关的一般性Servlet 类;
--javax.servlet.http.*:除了继承javax.servlet.* 之外,并且还增加与HTTP协议有关的功能。
所有的Servlet都必须实现javax.servlet.Servlet 接口(Interface)。
若Servlet程序和HTTP协议无关,那么必须继承javax.servlet.GenericServlet类;
若Servlet程序和HTTP协议有关,那么必须继承javax.servlet.http.HttpServlet 类。
--HttpServlet:提供了一个抽象类用来创建Http Servlet。
public voiddoGet()方法:用来处理客户端发出的 GET 请求
public voiddoPost()方法:用来处理 POST请求
--javax.servlet包的接口:
ServletConfig接口:在初始化的过程中由Servlet容器使用
ServletContext接口:定义Servlet用于获取来自其容器的信息的方法
ServletRequest接口:向服务器请求信息
ServletResponse接口:响应客户端请求
--javax.servlet包的类:
ServletInputStream类:用于从客户端读取二进制数据
ServletOutputStream类:用于将二进制数据发送到客户端
--javax.servlet.http包的接口:
HttpServletRequest接口:提供Http请求信息
HttpServletResponse接口:提供Http响应
五、第一个Servlet小例子
还是习惯在IDE环境下开发,使用MyEclipse工具,建立web project。
这个小例子包括Get方式请求和Post方式请求,如果你不能区分二者,那就以浏览地址的后缀是否带参数来区分吧。我的jsp页面:
<body> <h1>第一个Servlet小例子</h1> <hr> <a href="servlet/HelloServlet">Get方式请求</a> <br> <form action="servlet/HelloServlet" method="post"> <input type="submit" value="Post方式请求"> </form> </body>
HelloServlet类
//继承于HttpServlet public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("处理Get()请求..."); PrintWriter out = resp.getWriter(); //指定输出文件类型 resp.setContentType("text/html;charset=utf-8"); out.println("<strong>Hello Servlet!</strong><br>"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("处理Post()请求..."); PrintWriter out = resp.getWriter(); //指定输出文件类型 resp.setContentType("text/html;charset=utf-8"); out.println("<strong>Hello Servlet!</strong><br>"); } }
最重要的就是web配置文件的配置,我一直认为,它就是一个承上启下的连接点,把浏览器的地址URL和Servlet类关联起来。
<servlet> <servlet-name>HelloServlet</servlet-name> <servlet-class>servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloServlet</servlet-name> <url-pattern>/servlet/HelloServlet</url-pattern> </servlet-mapping>
还有必要解释一下配置文件吗?有点类似键值对key、value。根据截取浏览器中的URL,匹配<servlet-mapping>映射中的url,然后找到其对应的servlet-name。2个servlet-name其实是一个,根据name就可以找到要执行的Servlet类。
希望能给Java新手解疑答惑,继续努力!
相关文章推荐
- 利用Echarts来制作图表
- eclipse调试之edit source lookup path解决方案
- SpringMVC 错误分析:@Autowired Could not autowire field
- Java中的Callback 回调函数
- 黑马程序员---Java基础加强---JDK1.5新特性
- classLoader和javassist
- 5分钟用Spring4 搭建一个REST WebService
- test7.2
- Spring3中用注解直接注入properties中的值
- Java学习笔记【泛型数组列表ArrayList】
- java装饰器模式
- springmvc从页面带过来的参数乱码
- java学习开始
- Java并发编程:线程间协作的两种方式:wait、notify、notifyAll和Condition
- 最长上升子序列 O(nlogn)解法 (java)
- Google Java Style
- Maven搭建SpringMVC+Mybatis项目详解
- 设置springboot启动端口
- Java XML的总结(四)
- Struts2的crud