你的位置:首页 > 软件开发 > Java > JavaWeb笔记一、Servlet 详解

JavaWeb笔记一、Servlet 详解

发布时间:2017-11-10 17:00:16
一、创建一个 Servlet 简单实现类1、创建一个 HelloServlet 类(测试 Servlet 接口方法) 1 //创建一个 HelloServlet 类并实现 Servlet 接口 2 public class HelloServlet implements Serv ...

一、创建一个 Servlet 简单实现类

1、创建一个 HelloServlet 类(测试 Servlet 接口方法)

 1 //创建一个 HelloServlet 类并实现 Servlet 接口 2 public class HelloServlet implements Servlet { 3 4  // Tomcat 停止服务时 Servlet 的销毁方法 5  @Override 6  public void destroy() { 7   System.out.println("destroy....."); 8  } 9 10  @Override11  public ServletConfig getServletConfig() {12   System.out.println("getServletConfig");13   return null;14  }15 16  @Override17  public String getServletInfo() {18   System.out.println("getServletInfo");19   return null;20  }21 22  // Servlet 加载时 初始化方法23  @Override24  public void init(ServletConfig servletConfig) throws ServletException {25   System.out.println("init");26  }27 28  // servlet 运行时的方法 每次请求调用29  @Override30  public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {31   System.out.println("service");32  }33 34  // HelloServlet 实现类的构造方法 加载时调用35  public HelloServlet() {36   System.out.println("HelloServlet's constructor");37  }38 39 }

2、配置和映射 Servlet

 1 <?

 

二、Servlet 生命周期

Servlet 生命周期的方法: 以下方法都是由 Serlvet 容器负责调用.

1). 构造器: 只被调用一次. 只有第一次请求 Servlet 时, 创建 Servlet 的实例. 调用构造器. 这说明 Serlvet 的单实例的!

2). init 方法: 只被调用一次. 在创建好实例后立即被调用. 用于初始化当前 Servlet. 

3). service: 被多次调用. 每次请求都会调用 service 方法. 实际用于响应请求的. 

4). destroy: 只被调用一次. 在当前 Servlet 所在的 WEB 应用被卸载前调用. 用于释放当前 Servlet 所占用的资源.

三、ServletConfig 对象(getInitParameterNames、getInitParameter、getServletName(不常用)、getServletContext四个接口方法)

1、在 web.
 1 <?

 

2、servlet实现类的 init()方法中 ServletConfig 对象实例(ServletConfig的getInitParameterNames、getInitParameter、getServletName(不常用)方法实例)

 1  // Servlet 加载时 初始化方法 2  @Override 3  public void init(ServletConfig servletConfig) throws ServletException { 4   System.out.println("init"); 5 6   // 获取初始化参数值 7   String user = servletConfig.getInitParameter("user"); 8   System.out.println("user:" + user); 9 10   // 获取初始化参数名和值11   Enumeration<String> names = servletConfig.getInitParameterNames();12   while (names.hasMoreElements()) {13    String name = names.nextElement();14    String value = servletConfig.getInitParameter(name);15    System.out.println("^^name:" + name + ":" + value);16   }17 18   // 获取 Servlet 注册名称19   String servletName = servletConfig.getServletName();20   System.out.println(servletName);21  }

 

3、在 servlet 实现类的 init()方法中 通过 ServletConfig 对象得到 ServletContext 对象

ServletContext的常见方法: getInitParameter()、getInitParameterNames()、getRealPath()、getContextPath()、getResourceAsStream()

 1  // Servlet 加载时 初始化方法 2  @Override 3  public void init(ServletConfig servletConfig) throws ServletException { 4   System.out.println("init"); 5 6   // WEB初始化参数: 可以为所有的 Servlet 所获取, 而 Servlet 的初始化参数只用那个 Serlvet 可以获取. 7   // 获取 ServletContext 对象 8   ServletContext servletContext = servletConfig.getServletContext(); 9 10   // 获取当前 WEB 初始化参数值11   String driver = servletContext.getInitParameter("driver");12   System.out.println("driver:" + driver);13 14   // 获取当前 WEB 初始化参数名和值15   Enumeration<String> name2 = servletContext.getInitParameterNames();16   while (name2.hasMoreElements()) {17    String name = name2.nextElement();18    String value = servletContext.getInitParameter(name);19    System.out.println("-->" + name + ":" + value);20   }21 22   // 获取当前 WEB 应用的某一个文件在服务器上的绝对路径, 而不是不部署前的路径23   String realPath = servletContext.getRealPath("/111.txt");24   // 不是 E:\eclipse\workspace\JavaWeb\WebContent\111.txt25   System.out.println(realPath);26 27   // 获取当前 WEB 应用的名称28   String contextPath = servletContext.getContextPath();29   System.out.println(contextPath);30 31   // 获取一个文件的输入流(部署前的路径)32   try {33    ClassLoader classLoader = getClass().getClassLoader();34    InputStream is = classLoader.getResourceAsStream("jdbc.properties");35    System.out.println("1." + is);36   } catch (Exception e) {37    e.printStackTrace();38   }39 40   // 获取一个文件的输入流(服务器上的路径)41   try {42    InputStream is2 = servletContext.getResourceAsStream("/WEB-INF/classes/jdbc.properties");43    System.out.println("2." + is2);44   } catch (Exception e) {45    e.printStackTrace();46   }47  }

 四、servlet 实现类的 service()方法中的 Request 对象

1、Request 的常用方法: getParameter(String name)、getParameterValues(String name)、getParameterNames()、getParameterMap()

 1  // 用于应答请求: 因为每次请求都会调用 service() 方法 2  // ServletRequest: 封装了请求信息, 可以从中获取到任何的请求信息 3  // ServletResponse: 封装了响应信息, 如果想给用户什么响应, 具体可以使用该接口的方法实现 4  @Override 5  public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { 6   System.out.println("请求成功......."); 7   System.out.println(request); 8 9   // String getParameter(String name): 根据请求参数的名字, 返回参数值.10   String user = request.getParameter("user");11   String password = request.getParameter("password");12   System.out.println(user + "," + password);13 14   // getParameter()方法只能获取一个参数值15   String interesting = request.getParameter("interesting");16   System.out.println(interesting);17 18   // String[] getParameterValues(String name): 根据请求参数的名字, 返回请求参数对应的字符串数组19   String[] interestings = request.getParameterValues("interesting");20   for (String string : interestings) {21    System.out.println("-->" + string);22   }23 24   // Enumeration getParameterNames(): 返回参数名对应的 Enumeration 对象,类似于25   // ServletConfig(或 ServletContext) 的 getInitParameterNames() 方法.26   Enumeration<String> names = request.getParameterNames();27   while (names.hasMoreElements()) {28    String name = names.nextElement();29    String valuee = request.getParameter(name);30    System.out.println("==>" + name + ", " + valuee);31   }32 33   // Map getParameterMap(): 返回请求参数的键值对: key: 参数名, value: 参数值, String 数组类型.34   Map<String, String[]> map = request.getParameterMap();35   for (Map.Entry<String, String[]> entry : map.entrySet()) {36    System.out.println("**" + entry.getKey() + ":" + Arrays.asList(entry.getValue()));37   }38  }

 

 2、httpServletRequest 的常用方法:getRequestURI()、getMethod()、getQueryString()、getServletPath()

 1  public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { 2   System.out.println("请求成功......."); 3   System.out.println(request); 4   // 获取请求的 URI 5   HttpServletRequest httpServletRequest = (HttpServletRequest) request; 6   String requestURI = httpServletRequest.getRequestURI(); 7   System.out.println(requestURI); 8 9   // 获取请求方式10   String method = httpServletRequest.getMethod();11   System.out.println(method);12 13   // 若是一个 GET 请求, 获取请求参数对应的那个字符串, 即 ? 后的那个字符串.14   String queryString = httpServletRequest.getQueryString();15   System.out.println(queryString);16 17   // 获取请求的 Serlvet 的映射路径18   String servletPath = httpServletRequest.getServletPath();19   System.out.println(servletPath);20  }

 

五、servlet 实现类的 service()方法中的 Response 对象

Response 目前常用方法:setContentType()、getWriter()

 1  public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { 2   System.out.println("请求成功......."); 3   System.out.println(request); 4   // 设置响应方式 5   response.setContentType("application/msword"); 6 7   // 在页面响应一个内容 8   PrintWriter out = response.getWriter(); 9   out.println("HelloWorld...");10  }

 六、GenericServlet 实现 Servelt、ServletConfig接口

JavaWeb笔记一、Servlet 详解View Code

 

 七、HttpServlet 继承 GenericServlet类

JavaWeb笔记一、Servlet 详解View Code

 

 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:JavaWeb笔记一、Servlet 详解

关键词:JAVA

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。