Serclet 是一个容器接口,可以实现Serclet接口来达到简单的Web和Tomcat之间的交互
1,web.xml配置代码以及说明
1<?xml version="1.0" encoding="UTF-8"?> 2<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3xmlns="http://xmlns.jcp.org/xml/ns/javaee" 4xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" 5id="WebApp_ID" version="3.1"> 6<!-- Web应用的初始化参数,相当于全局的,任何都可以用 --> 7<context-param> 8<param-name>driver</param-name> 9<param-value>oracle.jdbc.DriverManager</param-value> 10</context-param> 11<!-- 配置和映射Servelt ,只有当前helloServelt能获取 --> 12<servlet> 13<!-- 注册的名字 --> 14<servlet-name>helloServelt</servlet-name> 15<!-- 类的权限类名 --> 16<servlet-class>servlet.HelloServlet</servlet-class> 17<!-- 配置servlet的初始化参数,此节点必须放在 load-on-startup节点之前 --> 18<init-param> 19<param-name>user</param-name> 20<param-value>huhu</param-value> 21</init-param> 22<init-param> 23<param-name>password</param-name> 24<param-value>1234</param-value> 25</init-param> 26<!-- 可指定servlet被创建的时机 :为负数则在第一次访问时创建,为0或正数则在servlet加载进servlet容器时创建,且越小先被创建 --> 27<load-on-startup>1</load-on-startup> 28</servlet> 29<servlet-mapping> 30<!-- 跟 servlet 节点的servlet-name节点的text一致 --> 31<servlet-name>helloServelt</servlet-name> 32<!-- 映射具体的访问路径 /代表访问当前Web应用的根目录 --> 33<url-pattern>/hello</url-pattern> 34</servlet-mapping> 35 36</web-app>
2,Servlet实现类常用的方法及说明
1package servlet; 2 3import java.io.IOException; 4import java.io.InputStream; 5import java.io.PrintWriter; 6import java.util.Arrays; 7import java.util.Enumeration; 8import java.util.Map; 9 10import javax.servlet.Servlet; 11import javax.servlet.ServletConfig; 12import javax.servlet.ServletContext; 13import javax.servlet.ServletException; 14import javax.servlet.ServletRequest; 15import javax.servlet.ServletResponse; 16import javax.servlet.http.HttpServletRequest; 17 18/** 19* Servlet的实现以及一些常用方法注释 20* 21* @author SmartTiger 22* @created 2018年10月15日 下午4:33:31 23*/ 24public class HelloServlet implements Servlet { 25 26// 当前Web应用关闭时启动的方法 27@Override 28public void destroy() { 29} 30 31@Override 32public ServletConfig getServletConfig() { 33 34return null; 35} 36 37@Override 38public String getServletInfo() { 39return null; 40} 41 42// 初始化配置信息 43@Override 44public void init(ServletConfig servletConfig) throws ServletException { 45// 知道名字的情况下求值 46String initParameter = servletConfig.getInitParameter("user"); 47String initParameter2 = servletConfig.getInitParameter("password"); 48System.out.println("user:" + initParameter + " " + "password:" + initParameter2); 49// 不知道名字的情况下,求所有,然后遍历 50Enumeration<String> initParameterNames = servletConfig.getInitParameterNames(); 51while (initParameterNames.hasMoreElements()) { 52String name = initParameterNames.nextElement(); 53String value = servletConfig.getInitParameter(name); 54System.out.println("name:" + name + " " + "value:" + value); 55} 56// 获取servletContext(全局初始化信息) 57ServletContext servletContext = servletConfig.getServletContext(); 58// 1.获取当前Web应用的初始化信息 59String driver = servletContext.getInitParameter("driver"); 60System.out.println("driver:" + driver); 61// 2.获取当前Web应用下在服务器上的文件的绝对路径 62String realPath = servletContext.getRealPath("/web.xml"); 63System.out.println("realPath:" + realPath); 64// 3.获取当前Web应用下的应用的名称 65String contextPath = servletContext.getContextPath(); 66System.out.println("contextPath:" + contextPath); 67// 4.获取当前Web应用下文件的输入流(/WEB-INF/classes) 68InputStream resourceAsStream = servletContext.getResourceAsStream("/WEB-INF/classes/lianxi.properties"); 69System.out.println("resourceAsStream:" + resourceAsStream); 70} 71 72// 每一次请求时调用的方法 73@Override 74public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException { 75// 设置编码格式 76request.setCharacterEncoding("utf-8"); 77// 获取请求内容(request相关的方法) 78// 1,在知道name的情况下获取value 79String parameter = request.getParameter("名字"); 80System.out.println(parameter); 81// 2,不知道名字的情况下:先求名字的集合 82Enumeration<String> parameterNames = request.getParameterNames(); 83while (parameterNames.hasMoreElements()) { 84String name = parameterNames.nextElement(); 85System.out.println(name + " " + request.getParameter(name)); 86} 87// 获取该name下的value集合:例如html中的多选框 88String[] parameterValues = request.getParameterValues("interesting"); 89for (int i = 1; i < parameterValues.length; i++) { 90System.out.print(" " + parameterValues[i]); 91} 92// 获取值的键值对,键为名字,值为值的数组 93Map<String, String[]> map = request.getParameterMap(); 94System.out.println(Arrays.toString(map.get("姓名"))); 95System.out.println(Arrays.toString(map.get("熟悉技能"))); 96HttpServletRequest httpServletRequest = (HttpServletRequest) request; 97// 获取请求URL 98System.out.println(httpServletRequest.getRequestURL()); 99// 获取请求方式 100System.out.println(httpServletRequest.getMethod()); 101// 获取GET请求方式后边的参数 102System.out.println(httpServletRequest.getQueryString()); 103// 获取请求url-pattern 104System.out.println(httpServletRequest.getServletPath()); 105 106// response:先设置响应编码格式(respose相关的方法) 107response.setCharacterEncoding("GBK"); 108// 设置响应的内容类型:以Word为例 109response.setContentType("application/x-abiword"); 110// 获取响应打印流 111PrintWriter writer = response.getWriter(); 112writer.println("你好"); 113} 114 115public HelloServlet() { 116 117} 118}