Servlet中的Request的一些实现细节和应用

来源:互联网 发布:散打运动员的身体数据 编辑:程序博客网 时间:2024/06/05 10:00

    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 {}}