Servlet是一个基于Java技术的Web组件,用于处理Web请求,生成动态内容,运行于服务器端,由Servlet容器创建并调用
创建Servler
-
继承HttpServler对象
-
重写doPost()或者doGet()方法
部署servlet
1.配置web.xml
servletTest servlet.ServletTest servletTest /servletTest.html
2.WebServlet注解
package Servlet; import javax.servlet.*; import java.io.IOException; @WebServlet("/FirstServlet") //注解表示servlet默认路径可以省略上面servlet部署 public class FirstServlet implements Servlet { //用于初始化,service第一次被访问时执行一次 @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("执行了init"); }
servlet接口常用方法
servlet接口定义了所有servlet主键必须实现的方法
GenericServlet抽象类
抽象类GenerivServlet定义了通用的不依赖于协议的servlet
HttpServlet抽象类
抽象类HttpServlet继承自GenerivServlet类,除了具有GenerivServlet类相似的方法,还针对http提供了相关的技术支持,能够对http的post、get等请求进行差异化处理
ServletContext接口
1.ServletContext是一个接口,他表示Servlet上下文对象
2.一个web工程,只有一个ServletContext对象实例
3.ServletContext对象是一个域对象
域对象:是一种像Map一样存取数据的对象,叫域对象
ServletContextt类的四个作用域
1.获取web.xml中的配置上下文参数context-param
2.获取当前的工程路径,格式:/工程路径
3.获取工程部署后在服务器硬盘上的绝对路径
4.像Map一样存取数据
ServletConfig接口
ServletConfig类(servlet程序的配置信息类) Servlet程序和ServletConfig对象都是由Tomcat负责创建的,我们只负责使用,Servlet程序默认是第一次访问的时候创建,ServletConfig是每个Servlet程序创建时,就创建一个对应的ServletConfig对象
作用: 可以获取Servlet程序的别名Servlet-name的值 获取初始化参数init-param 获取ServletContext对象
web.xml的配置
HelloServlet servlet.HelloServlet username root url jdbc:mysql://localhost:3306/1 HelloServlet /hello
Java类中
public void init(ServletConfig servletConfig) throws ServletException { System.out.println("2.init初始化方法"); //1. 可以获取Servlet程序的别名Servlet-name的值 System.out.println("HelloServlet程序的别名是:"+servletConfig.getServletName()); // 2. 获取初始化参数init-param System.out.println("初始化参数username的值是:"+servletConfig.getInitParameter("username")); System.out.println("初始化参数url的值是:"+servletConfig.getInitParameter("url")); // 3. 获取ServletContext对象 System.out.println(servletConfig.getServletContext()); }
ServletRequest接口
servlet组件能够利用servletRequest接口获取客户端的请求数据
HttpServletRequest接口
HttpServletRequest接口位于java.servlet.http包中,HttpServletRequest接口继承自ServletRequest接口,同时增加了一些用于读取http请求信息的方法
ServletResponse接口
servlet组件可以使用ServletResponse对象设置和发送响应数据
HttpServletResponse接口
HttpServletResponse接口继承自ServletResponse接口,用于在发送响应时提供特定于http的功能
Servlet生命周期
示例代码:
package Servlet; import javax.servlet.*; import java.io.IOException; @WebServlet("/FirstServlet") //注解表示servlet默认路径可以省略上面servlet部署 public class FirstServlet implements Servlet { //用于初始化,service第一次被访问时执行一次 @Override public void init(ServletConfig servletConfig) throws ServletException { System.out.println("执行了init"); } @Override public ServletConfig getServletConfig() { System.out.println("执行了getServletConfig"); return null; } @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("执行了service"); } @Override public String getServletInfo() { System.out.println("执行了getServletInfo"); return null; } //销毁,服务器关闭时执行 @Override public void destroy() { System.out.println("执行了destroy"); } }
首页代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>$Title$
结果:
Servlet继承体系
通过继承HttpServlet实现Servlet程序
一般使用继承HttpServlet类的方式实现Servlet程序
1.缩写一个类去继承HttpServlet类 2.根据业务重写doGet或者doPost方法 3.到web.xml中的配置Servlet程序的访问地址
Httpservlet类实现
package servlet; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class HelloSrevlet2 extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //系统默认使用get请求 System.out.println("HelloSrevlet2 的doPost请求"); } @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { System.out.println("HelloSrevlet2 的doGet请求"); } }
访问应用上下文
使用
adminEmail [email protected]
JSP对比Servlet
JSP:在HTML页面嵌入Java代码和JSP标记
便于表现层开发
前后端代码混乱,不利于代码重用和模块化开发
Servlet:在Java类中输出HTML代码
便于代码重用和模块化开发
不利于开发表现层功能、开发效率低
@webservlet常用属性
疏导图
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)