1. 程式人生 > 其它 >javax.servlet.http.HttpServletRequest介面-02

javax.servlet.http.HttpServletRequest介面-02

技術標籤:webjavahtml

10-HttpServletRequest-02

HttpServletRequest中常用的方法

父介面中的常用方法ServletRequest		
	-	String getParameter(String name)
	-	String[] getParameterValues(String name)
	-	Map<String,String[]> getParameterMap()
	-	Enumeration getParameterNames()
	
	-	void setAttribute(String name,Object o)		//向request範圍中儲存資料
	-	Object getAttribute(String name)			//向request範圍中讀取物件
	-	void removeAttribute(String name)			//刪除request範圍中的物件

HttpServletRequest是一個怎樣的範圍呢?
HttpServletRequest型別的變數通常命名為request,代表當前本次的請求,
一次請求對應一個request物件,100個請求對應100個request物件,請求範圍是極小的
request只能完成在同一次請求中的傳遞資料

	-	RequestDispatcher getRequestDispatcher(String path)//獲取請求轉發器,讓轉發器物件指向下一個資源
	 
	-	void setCharacterEncoding(String env)
	
子介面中常用的方法HttpServletRequest
	-	String getRemoteAddr()//上邊的,分類簡單放到了這裡
	-	String getContextPath()//獲取webapp的根路徑
	-	String getMethod()
	-	String getRequestURI()
	-	StringBuffer getRequestURL()
	-	String getServletPath()
	
	-	HttpSession getSession()
	-	Cookie[] getCookies()

ServletContext是Servlet上下文物件,改介面中也有一下幾個方法
- Object getAttribute(String name) //從ServletContext範圍中讀取資料
- void removeAttribute(String name) //移除ServletContext範圍中的資料
- void setAttribute(String name,Object o) //向servletContext範圍中新增資料
ServletContext是怎麼樣一個範圍?
所有使用者共享的一個範圍物件,我們一般把ServletContext物件命名為:application
可見這個物件代表一個應用,一個webapp只有一個這樣的物件

ueser類,實現set(),get(),toString()方法

package com.javaweb.servlet;

public class user {
	private String usercode;
	private String username;
	
	public String getUsercode() {
		return usercode;
	}
	public void setUsercode(String usercode) {
		this.usercode = usercode;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	@Override
	public String toString() {
		return "user [usercode=" + usercode + ", username=" + username + "]";
	}
}

將ueser資料存入到request物件當中,在BServlet中讀取,這裡用到轉發器,再呼叫轉發器的forward方法
AServlet:

package com.javaweb.servlet;

import java.io.IOException;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class AServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		user user1 = new user();
		user1.setUsercode("111");
		user1.setUsername("zhangsan");
		
		//將user物件儲存在request當中
		request.setAttribute("userobj", user1);
		
		//從request範圍中取出資料
//		Object obj = request.getAttribute("userobj");		
//		response.getWriter().print(obj);
		
		//跳轉
		//執行AServet之後,跳轉到BServlet執行,將AServlet執行和BServlet執行放到同一個請求當中
		//必須使用跳轉技術【forward】
		/*
		 * 1、獲取請求轉發器物件
		 * RequestDispatcher dispatcher = request.getRequestDispatcher("/b");//括號裡是下一個資源的路徑,這個轉發器指向了BServlet
		 * 2、呼叫請求轉發器的forward方法即可完成轉發
		 * dispatcher.forward(request, response);
		 * */
		
		//轉發(轉發是一次請求)
			request.getRequestDispatcher("/b").forward(request,response);	
	}
}

BServlet

package com.javaweb.servlet;

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 BServlet extends HttpServlet {

	@Override
	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//從request範圍中取出資料
		Object obj = request.getAttribute("userobj");
		response.getWriter().print(obj);
	}
	
}

index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="/10-HttpServletRequest-02/textRequest">測試request</a>
	<br><br>
	<a href="/10-HttpServletRequest-02/a">AServlet</a>
	
	<a href="/10-HttpServletRequest-02/b">BServelt</a>
</body>
</html>

xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<servlet>
		<servlet-name>textRequest</servlet-name>
		<servlet-class>com.javaweb.servlet.TestRequestServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>textRequest</servlet-name>
		<url-pattern>/textRequest</url-pattern>
	</servlet-mapping>
	
	
	
	<servlet>
		<servlet-name>b</servlet-name>
		<servlet-class>com.javaweb.servlet.BServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>b</servlet-name>
		<url-pattern>/b</url-pattern>
	</servlet-mapping>
	
	
	
	<servlet>
		<servlet-name>a</servlet-name>
		<servlet-class>com.javaweb.servlet.AServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>a</servlet-name>
		<url-pattern>/a</url-pattern>
	</servlet-mapping>
</web-app>