现在的位置: 首页 > 综合 > 正文

request 和 response

2013年01月11日 ⁄ 综合 ⁄ 共 5400字 ⁄ 字号 评论关闭

一: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);
	}
}

抱歉!评论已关闭.