request.getMethod(): 得到客户机请求方式一般是GET或者POST
@Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String name = request.getParameter("name"); String password = request.getParameter("password"); System.out.println("浏览器发出请求时的完整URL,包括协议 主机名 端口(如果有): " + request.getRequestURL()); System.out.println("浏览器发出请求的资源名部分,去掉了协议和主机名: " + request.getRequestURI()); System.out.println("请求行中的参数部分: " + request.getQueryString()); System.out.println("浏览器所处于的客户机的IP地址: " + request.getRemoteAddr()); System.out.println("浏览器所处于的客户机的主机名: " + request.getRemoteHost()); System.out.println("浏览器所处于的客户机使用的网络端口: " + request.getRemotePort()); System.out.println("服务器的IP地址: " + request.getLocalAddr()); System.out.println("服务器的主机名: " + request.getLocalName()); System.out.println("得到客户机请求方式: " + request.getMethod()); String html = null; if ("admin".equals(name) && "123".equals(password)) html = "<div style=\'color:green\'>登录成功</div>"; else html = "<div style=\'color:red\'>登录失败</div>"; response.setContentType("text/html; charset=UTF-8"); PrintWriter pw = response.getWriter(); pw.println(html); } 获取参数request.getParameter(): 是常见的方法,用于获取单值的参数
request.getParameterValues(): 用于获取具有多值的参数,比如注册时候提交的 "hobits",可以是多选的。
request.getParameterMap(): 用于遍历所有的参数,并返回Map类型。
例子:写一个html
<form action="register" method="get"> 账号 : <input type="text"> <br> 爱好 : LOL<input type="checkbox" value="lol"> DOTA<input type="checkbox" value="dota"> <br> <input type="submit" value="注册"> </form>Servlet
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { System.out.println("获取单值参数name:" + request.getParameter("name")); String[] hobits = request.getParameterValues("hobits"); System.out.println("获取具有多值的参数hobits: " + Arrays.asList(hobits)); System.out.println("通过 getParameterMap 遍历所有的参数: "); Map<String, String[]> parameters = request.getParameterMap(); Set<String> paramNames = parameters.keySet(); for (String param : paramNames) { String[] value = parameters.get(param); System.out.println(param + ":" + Arrays.asList(value)); } } 获取头信息
request.getHeader() 获取浏览器传递过来的头信息。
比如getHeader("user-agent") 可以获取浏览器的基本资料,这样就能判断是firefox、IE、chrome、或者是safari浏览器
request.getHeaderNames() 获取浏览器所有的头信息名称,根据头信息名称就能遍历出所有的头信息
public void doGet(HttpServletRequest request, HttpServletResponse response){ Enumeration<String> headerNames= request.getHeaderNames(); while(headerNames.hasMoreElements()){ String header = headerNames.nextElement(); String value = request.getHeader(header); System.out.printf("%s\t%s%n",header,value); } } response 设置响应内容PrintWriter pw= response.getWriter();
有println(),append(),write(),format()等方法
设置响应格式 response.setContentType("text/html"); 设置响应编码设置响应编码有两种方式
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
这两种方式都需要在response.getWriter调用之前执行才能生效。
他们的区别在于:
前者不仅发送到浏览器的内容会使用UTF-8编码,而且还通知浏览器使用UTF-8编码方式进行显示。所以总能正常显示中文