JAVA Web基础3-Servlet
一.Servlet介绍
1.Servlet是运行在WEB服务器端的一段程序,它使用Java语言编写,具有Java语言的特点,与Java程序的区别是,Servlet对象主要封装了对HTTP请求的处理,并且他的运行需要Servlet容器的支持。
结构体系:Servlet对象,ServletConfig对象与Serializable对象是接口对象,GenericServlet是一个抽象类,对这3个接口提供了部分实现,但并没有对HTTP请求处理进行实现,由子类HttpServlet进行实现,在实际开发中使用的Servlet都继承于HttpServlet.
2.Servlet功能很强大,可以满足对WEB应用的开发需求,但每一句HTML代码都由Servlet的固定方法来输出,操作会过于复杂,于是出现了JSP技术。
Servlet特点:
1, 功能强大
2, 可移植性
3, 速度快, 性能高
4, 安全性高
5, 可扩展(面向对象)
Servlet与JSP的区别:
1.角色不同:Servlet为控制层,JSP为视图层。(MVC模式编程)
2.编程方法不同:Servlet使用JAVA代码,主要处理业务逻辑方面;JSP页面中通过HTML代码及JSP内置对象实现对HTTP请求及页面处理,其显示界面功能更为强大。
3.是否需要重新编译:Servlet的每次更改都需要Java编译器对其重新编译,JSP由JSP Container对其进行自动编辑。
4.速度不同:Servlet编译完成后,不需要再次编译,其效率要高于JSP。
二.Servlet代码结构
当用户对Servlet容器发送请求时,容器通知相应的Servlet对象进行处理,主要方法是service(),通过重写service()方法对请求进行处理;
要使servlet能够正常运行,需要在web.xml中对Servlet进行配置,以告知WEB容器哪一个请求调用哪一个Sevlet对象处理,对Servlet起到一个注册的作用;
例:新建一个Servlet类
public class MyServlet extends HttpServlet{
protected void service(HttpServletRequest request,HttpServletResponse response)throws Exception{
}
在web.xml文件中配置:通过<servlet>标签声明一个Servlet对象。
<servlet>
<servlet-name>MyServlet</servlet-name><!-- Servlet的名称 -->
<servlet-class>com.hanqi.servlet.MyServlet</servlet-class><!-- Servlet对象的完整位置(可通过右键点击类名copy Qualified Name快速获取) -->
<init-param><!-- 可在这设置初始化参数 -->
<param-name>name</param-name>
<param-value>value</param-value>
</init-param>
<load-on-startup>1</load-on-startup><!-- 启动时加载,数字越小,优先级越高; -->
</servlet>
<!-- 映射Servlet -->
<servlet-mapping>
<servlet-name>MyServlet</servlet-name><!-- 名称需要与上面的一样 -->
<url-pattern>/MyServlet</url-pattern><!-- 请求的路径,与页面上一样 -->
</servlet-mapping>
<!-- 执行顺序为先通过请求路径找到该Servlet映射名称,再根据名称找到具体位置 -->
注意:每次修改java文件都会自动重启服务器对其重新编译,可通过修改Servers项目中的server.xml文件中最下面<context>标签中的reloadable="true"改为false关闭自动重启功能。
Servlet生命周期:
init(ServletConfig config);----初始化一个servlet类的实例, 这个方法只会执行一次
可以在web.xml中配置, <load-on-startup></load-on-startup>, 标签中写一个int型数字,
当这个值为0或者不配置这个标签的时候, 这个servlet将会在使用的时候才会去初始化, 其他数字会在tomcat服务器运行的时候就加载, 数字越小, 优先级越高。
service()方法
这个方法是响应客户请求的, 这个方法的执行来决定这个servlet是该调用doPost还是doGet。
destroy();----销毁一个servlet类的实例
停止tomcat的时候会调用此方法, 来销毁servlet实例对象, 释放资源
在实际开发中一般采用集成工具直接创建一个Servlet类,只需要重写doGet()方法即可;
三.Servlet常用内置对象的获取
request和response对象可直接使用;
application对象通过request.getServletContext()获取;
session对象通过request,getSession()获取;
out对象通过response.getWriter()获取;