一:request
用来访问servlet,获取客户端的各种信息。
1、返回服务器信息
2、接收页面参数
3、跳转
1、返回服务器的各种信息
package com.haizhu.request; import java.io.IOException; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletRequestDemo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String headValue = request.getHeader("Accept-Encoding"); System.out.println(headValue); System.out.println("******************************************"); Enumeration enu = request.getHeaders("Accept-Encoding"); while(enu.hasMoreElements()){ String value = (String)enu.nextElement(); System.out.println(value); } System.out.println("******************************************"); // 获取URL,这个可以用来控制访问权限, String URI = request.getRequestURI(); StringBuffer URL = request.getRequestURL(); System.out.println(URI); System.out.println(URL); System.out.println("******************************************"); // 获取通过通过“?” 后跟参数的形式传递过来的参数 String queryString = request.getQueryString(); System.out.println(queryString); System.out.println("******************************************"); // 获取客户机的IP地址、host、端口等 String ip = request.getRemoteAddr(); String host = request.getRemoteHost(); int port = request.getRemotePort(); System.out.println(ip); System.out.println(host); System.out.println(port); System.out.println("******************************************"); // 请求方式 String method = request.getMethod(); System.out.println(method); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
2、接收页面传递过来的数据
web的配置文件就省略了,下面是param.html页面
<!DOCTYPE html> <html> <head> <title>param.html</title> </head> <body> <a href="/ServletDemo/ServletRequestParamDemo?username=Haizhu&password=1234" >点我</a> <form action="/ServletDemo/ServletRequestParamDemo" method="post"> 用户名:<input type="text" name="username"></input><br> 密 码:<input type="text" name="password"></input><br> <input type="submit" value="提交"> </form> </body> </html>
ServletRequestParamDemo.java
package com.haizhu.request; import java.io.IOException; import java.util.Enumeration; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletRequestParamDemo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); System.out.println(username); System.out.println(password); Enumeration enu = request.getAttributeNames(); while(enu.hasMoreElements()){ String name = (String)enu.nextElement(); String word = request.getParameter(name); System.out.println(name); System.out.println(word); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
3、实现跳转
web.xml省略,
ServletRequestAttribute.java
package com.haizhu.request; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletRequestAttribute extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 定义一个变量,模拟从页面请求中接收的数据 String attrData = "myAttributeData"; // 将这个数据封装在 attribute 中 request.setAttribute("data", attrData); // 转发,跳转到根目录下的 servletRequestAttribute.jsp 页面, request.getRequestDispatcher("/servletRequestAttribute.jsp").forward(request, response); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }
servletRequestAttribute.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'servletRequestAttribute.jsp' starting page</title> </head> <body> <!-- 第一种取值方法 --> ${data } <!-- 第二种取值方法 --> <% String myData = (String)request.getAttribute("data"); // 注意是,getAttribute(),不是getParameter out.write(myData); // 一个是request域的参数,一个是context域的参数 %> </body> </html>
二:response
servlet返回的各种信息。
范例:
package com.haizhu.response; import java.io.IOException; import java.io.OutputStream; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ServletResponseDemo extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { function2(response); } // 以 OutputSteam 输出 private void function1(HttpServletResponse response) throws IOException{ response.setHeader("Content-type", "text/html;charset=UTF-8"); // 设置浏览器的解析编码 String data = "你好!"; OutputStream out = response.getOutputStream(); out.write(data.getBytes("UTF-8")); // 设置字节编码 } // 以 PrintWriter 输出 private void function2(HttpServletResponse response) throws IOException { response.setCharacterEncoding("UTF-8"); // 设置response 的码表,以控制以什么码表向浏览器输出 //response.setHeader("Content-type", "text/html;charset=UTF-8"); // 设置浏览器以什么码表解析 response.setContentType("text/html;charset=UTF-8"); // 作用同上 String data = "中国!"; PrintWriter out = response.getWriter(); out.write(data); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); } }