全国工程建设信息网站,城乡与住房建设部网站首页,wordpress 作品展示,wordpress 注册简码JavaWeb学习——Servlet相关的接口和类摘要#xff1a;本文主要学习了Servlet相关的接口和类。Servlet的接口和类三种方式实现Servlet有三种方式#xff1a;实现javax.servlet.Servlet接口。继承javax.servlet.GenericServlet类。继承javax.servlet.http.HttpServlet类。实现…JavaWeb学习——Servlet相关的接口和类摘要本文主要学习了Servlet相关的接口和类。Servlet的接口和类三种方式实现Servlet有三种方式实现javax.servlet.Servlet接口。继承javax.servlet.GenericServlet类。继承javax.servlet.http.HttpServlet类。实现Servlet接口Servlet接口是最基础的接口如果要使用Servlet就要实现这个接口或者继承其他已经实现了这个接口的类。创建一个类并实现Servlet接口1 public class TestServlet implements Servlet {2 Override3 public ServletConfig getServletConfig() {4 return null;5 }67 Override8 public String getServletInfo() {9 return null;10 }1112 Override13 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {14 System.out.println(service()方法被执行……);15 }1617 Override18 public void init(ServletConfig config) throws ServletException {19 System.out.println(init()方法被执行……);20 }2122 Override23 public void destroy() {24 System.out.println(destroy()方法被执行……);25 }26 }继承GenericServlet类GenericServlet类实现并重写了Servlet接口的一些方法使得程序员在开发的时候只需要关注service()方法的实现就好。创建一个类并继承GenericServlet类1 public class TestServlet extends GenericServlet {2 Override3 public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {4 System.out.println(service()方法被执行……);5 }6 }继承HttpServlet类HttpServlet类继承了GenericServlet类是对HTTP请求的特殊支持由于开发的项目一般遵循HTTP协议所以经常使用的是HttpServlet类。在HttpServlet的service(HttpServletRequest, HttpServletResponse)方法会去判断当前请求是GET还是POST如果是GET请求那么会去调用本类的doGet()方法如果是POST请求会去调用doPost()方法这说明在子类中去重写doGet()或doPost()方法即可。创建一个类并继承HttpServlet类1 public class TestServlet extends HttpServlet {2 Override3 protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {4 super.doGet(req, resp);5 }67 Override8 protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {9 super.doPost(req, resp);10 }11 }其他的接口和类ServletConfig接口代表当前Servlet的配置信息封装了ServletContext对象和配置参数信息。可以通过Servlet里面的getServletConfig()方法获取1 public ServletConfig getServletConfig();常用方法1 public String getServletName();// 获取当前Servlet的友好名称。2 public ServletContext getServletContext();// 获取ServletContext对象。3 public String getInitParameter(String name);// 获取初始化参数初始化参数可以在web.xml配置文件的标签里的标签里设置。4 public Enumeration getInitParameterNames();// 获取全部初始化参数初始化参数同样需要在web.xml配置文件的标签里的标签里设置。ServletContext接口代表当前Web应用服务器为每个Web应用程序都创建一个对应的ServletContext对象被所有客户端共享。当Web应用启动时自动创建当Web应用关闭和重新启动、服务器关闭时都会造成ServletContext销毁。可以通过ServletConfig里面的getServletContext()方法获取1 public ServletContext getServletContext();常用方法1 public String getServletContextName();// 获取当前项目的名称。2 public String getServerInfo();// 返回Servlet容器名称和版本号。3 public ServletContext getContext(String uripath);// 通过路径获取ServletContext对象。4 public String getContextPath();// 获取服务器上当前项目的相对目录。比如/HelloWorld。5 public String getRealPath(String path);// 得到指定文件的真实路径从应用程序根目录开始。比如TestServlet得到的是盘符:\文件夹\工作空间\项目名称\WebContent\TestServlet。6 public Set getResourcePaths(String path);// 得到指定相对路径下的文件夹名和文件名从应用程序根目录开始指定路径必须以/开头。比如/得到的是应用程序根目录下的内容。7 public URL getResource(String path) throws MalformedURLException;// 得到指定相对路径下的地址从应用程序根目录开始。比如/得到的是jndi:/域名/项目名/。8 public InputStream getResourceAsStream(String path);// 将指定文件转化为流以便读取从应用程序根目录开始。比如index.html可以获取到应用程序根目录下的index.html并转为流。9 public RequestDispatcher getRequestDispatcher(String path);// 创建跳转到指定路径的转发器从应用程序根目录开始指定路径必须以/开头。10 public RequestDispatcher getNamedDispatcher(String name);// 创建跳转到指定Servlet名的转发器不需要也不能以/开头。11 public String getInitParameter(String name);// 获取指定的初始化参数初始化参数需要在web.xml配置文件的标签里设置。12 public Enumeration getInitParameterNames();// 获取所有指定的初始化参数初始化参数也需要在web.xml配置文件的标签里设置。13 public boolean setInitParameter(String name, String value);// 设置初始化参数效果同在web.xml配置文件的标签里设置的一样。14 public Object getAttribute(String name);// 通过属性名获取属性对象。15 public Enumeration getAttributeNames();// 获取全部属性名。16 public void setAttribute(String name, Object object);// 设置属性名和属性对象。17 public void removeAttribute(String name);// 通过属性名删除属性对象。RequestDispatcher接口RequestDispatcher实例对象是由Servlet引擎创建的用于包装一个要被其他资源调用的资源并可以通过其中的方法将客户端的请求转发给所包装的资源。RequestDispatcher接口中定义了两个方法forward()方法和include()方法。forward()和include()方法接收的两个参数必须是传递给当前Servlet的service()方法的ServletRequest和ServletResponse对象或者是对它们进行了包装的ServletRequestWrapper和ServletResponseWrapper对象。可以通过ServletContext对象的getRequestDispatcher()方法和getNamedDispatcher()方法获取1 public RequestDispatcher getRequestDispatcher(String path);2 public RequestDispatcher getNamedDispatcher(String name);请求转发1 // 该方法用于将请求从一个Servlet传递到服务器上另外的Servlet、Jsp页面或者Html文件由当前的Servlet发送给另一个Servlet该方法必须在响应被提交给客户端之前调用。2 // 在当前的Servlet中可以给请求设置属性设置的响应头信息不回被忽略但是设置的响应体信息可能会被忽略。3 public void forward(ServletRequest request, ServletResponse response) throws ServletException, IOException;请求包含1 // 该方法用于在响应中包含Servlet、Jsp页面或者Html文件由当前的Servlet发送给客户端必须要在当前Servlet中设置编码格式。2 // 当前Servlet和要包含的资源都可以设置响应体按先后顺序输出到客户端。3 public void include(ServletRequest request, ServletResponse response) throws ServletException, IOException;请求转发与请求包含比较请求转发大多是应用在Servlet中转发目标大多是Jsp页面。请求包含大多是应用在Jsp页面中完成多页面的合并。