Servlet中,response是向浏览器发出请求,而request就是获得浏览器向服务器发出的请求了,下面首先演示request的常用方法
package com.bird.request; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * @use Request的常用方法 * @author Bird * */ public class RequestDemo1 extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // System.out.println("request" + request.getRequestURI()); // System.out.println("request" + request.getRequestURL()); // System.out.println(request.getQueryString());//得到查询窜 // System.out.println(request.getRemoteAddr());//得到访问的IP地址 // System.out.println(request.getRemotePort());//得到访问端口 System.out.println(request.getMethod());//得到请求方式 } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
获取求情头的信息和数据
package com.bird.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; /** * @use 获取请求头信息和数据 * @author Bird * */ public class RequestDemo2 extends HttpServlet { private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // String username = request.getParameter("username"); // System.out.println(username); } //获取头相关的方法 private void test1(HttpServletRequest request) { String headValue = request.getHeader("Accept-Encoding"); System.out.println(headValue); System.out.println("-----------------------------"); Enumeration en = request.getHeaders("Accept-Encoding"); while(en.hasMoreElements()){ String value = (String) en.nextElement(); System.out.println(value); } System.out.println("++++++++++++++++++++++++++"); en = request.getHeaderNames(); while(en.hasMoreElements()){ String value = (String) en.nextElement(); System.out.println(value); } } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); System.out.println(username); } }
package com.bird.ServletResponse; import java.io.IOException; import java.util.Date; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class ResponseDemo3 extends HttpServlet { /** * @use 控制浏览器定时刷新 * @author Bird */ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //实用的自动跳转技术 String message = "<meta http-equiv='refresh' content='3;url=/ServletDemo/index.jsp'>恭喜你登录成功,本浏览器将在3s后跳转,如果没有跳转,请点击<a href =''>连接</a>"; this.getServletContext().setAttribute("message", message); this.getServletContext().getRequestDispatcher("/message.jsp").forward(request, response); } //控制登录完毕后几秒内跳转 private void test2(HttpServletResponse response) throws IOException { //假设这个是一个处理登录的Servlet,用户到此就算是登录成功了 //浏览器需要在登录成功后自动跳转 response.setCharacterEncoding("UTF-8");//设置当前码表 response.setContentType("text/html;charset=UTF-8"); response.setHeader("refresh", "3;url='/ServletDemo/index.jsp'"); response.getWriter().write("恭喜你登录成功,本浏览器将在3s后跳转,如果没有跳转,请点击<a href =''>连接</a>"); } //控制浏览器定时刷新 private void test1(HttpServletResponse response) throws IOException { response.setHeader("refresh", "3");//控制浏览器每隔3秒访问一次服务器也就是刷新 String date = new Date().toString(); response.getOutputStream().write(date.getBytes()); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
Expries头控制缓存
package com.bird.ServletResponse; 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 ResponseDemo4 extends HttpServlet { /** * @use 使用Expries头控制缓存 * @author Bird */ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //一定要弄当前时间加上你所需要的时间才行 response.setDateHeader("expires", System.currentTimeMillis()+1000*3600); String date = "aaaaaaa"; response.getWriter().write(date); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }
重定向的特点
package com.bird.ServletResponse; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; /** * 重定向的特点 * 1.浏览器会向服务器发送两次,意味着有两个response * 2.用重定向,浏览器地址栏会发生变化 * 3.必须使用购物车才可以 * 4.同时调用getoutputstream和getwriter会抛出这个已经使用的异常,特别是重定向的时候 */ public class ResponseDemo5 extends HttpServlet { /** * @use 使用response实现请求的重定向 */ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // response.setStatus(302);//设置重定向状态码 // response.setHeader("location", "/ServletDemo/index.jsp"); response.sendRedirect("/ServletDemo/index.jsp"); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { } }