Servlet的 GenericServlet 和 HttpServlet
一、GenericServlet?
servlet 是一个接口 下面有两个抽象类 GenericServlet 和 HttpServlet 需要被 继承并重写其中的方法。
package javaweb; import javax.servlet.GenericServlet; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.annotation.WebServlet; import java.io.IOException; @WebServlet("/zxh") //注解配置 不需要xml配置 public class GenericServletDemo extends GenericServlet { @Override public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException { System.out.println("servlet 的儿子 generic servlet 是一个抽象类 子类继承时 需要重写他的一个抽象方法! "); } }
二、HttpServlet?
package javaweb; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /* 一 HttpServlet? HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时, HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户的这些信息。 二 HttpServletRequest常用方法? getRequestURL方法返回客户端发出请求时的完整URL getRequestURI方法返回请求行中的资源名部分 getQueryString方法返回请求行中的参数部分(参数名+值) getRemoteAddr方法返回发出请求的客户机的IP地址 getRemoteHost方法返回发出请求的客户机的完整主机名 getRemotePort方法返回web服务器所使用的网络端口号 getLocalPort方法返回web服务器所使用的网络端口号 getLocalAddr方法返回web服务器的IP地址 getLocalName方法返回web服务器的主机名 三 request?和 response? 1.原理? 由服务器创建 可以使用它 request 对象获取请求消息 response对象是响应 3.request继承关系 request------- servletrequest--------httpservletrequest(由Tomcat创建) 4.方法?【获取请求行的数据】 1 获取请求的方式 getMethod(); 2 目录的路径 getContextPath(); ***** 3 获取servlet路径 getServletPath(); 4 获得get请求参数 getQueryString(); 5获取请求的url getRequestURI(); getRequestURL(); ***** 6 获得协议版本 getProtocol(); 7 获取客户的ip getRemoteAddr(); 5.其他方法?【获取请求参数的通用方式】 get post 都可以 1 getParameter(String name); 2 根据参数的名称获得参数的数组 getParameterValues(String name) 3 getParameterNames() 获得所有的请求参数的名称 4 getParameterMap() 获得所有参数的集合 map */ @WebServlet("/text.html") public class HttpServletDemo extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("提交方式为Post"); // 1 获取请求的方式 getMethod(); String method = request.getMethod(); System.out.println(method); // 2 目录的路径 getContextPath(); ***** String contextPath = request.getContextPath(); System.out.println(contextPath); // 3 获取servlet路径 getServletPath(); String servletPath = request.getServletPath(); System.out.println(servletPath); // 4 获得get请求参数 getQueryString(); String s = request.getQueryString(); System.out.println(s); // 5获取请求的url getRequestURI(); String re = request.getRequestURI(); // getRequestURL(); ***** System.out.println(re); // 6 获得协议版本 getProtocol(); String protocol = request.getProtocol(); System.out.println(protocol); // 7 获取客户的ip getRemoteAddr(); String remoteAddr = request.getRemoteAddr(); System.out.println(remoteAddr); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("提交方式为get"); } }