2.15 Java基础40

今天讲的内容主要是HttpServletRequest和HttpServletResponse的常见方法运用以及javaee经典之四种属性范围。

1.HttpServletRequest的11种常见方法运用

package com.etc.controller;

import java.io.IOException;
import java.util.Arrays;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

/**
 * HttpServletRequest的方法:  
 * 0. request.setCharacterEncoding("utf-8"); 设置请求编码
 * 1 。String getParameter(String name)  :参数 String ;返回值 String =>获取单个值
 * 2。 String[] getParameterValues(String name)  : 参数 String ;返回值 String [] =>获取多个值,例如:复选框 全选
 * 3.  String getRemoteAddr()  ? 自行实验  客户端地址: 日志记录
 * 4.  String getRealPath(String path)   getRealPath 真实路径,部署了这个项目的本地磁盘的物理路径
 * 5.  RequestDispatcher getRequestDispatcher(String path)  得到一个RequestDispatcher,可以进行内部转发
 * 6.  HttpSession getSession()  得到HttpSession
 * 7.  String getRequestURI()  得到请求地址
 * 8.  StringBuffer getRequestURL() 完整请求地址: http://localhost:9090/dy02/HelloServlet
 * 9.  String getMethod() :  获取http请求的方法
 * 10. Cookie[] getCookies()   得到cookie对象
 */
@WebServlet("/HelloServlet")
public class HelloServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 1. 设置请求编码
		request.setCharacterEncoding("utf-8");
		// 2 获取请求参数的值
		String username = request.getParameter("username");
		//输出接收的参数的值
		System.out.println("username :"+username);
		
		String chks[] = request.getParameterValues("chks");
		
		System.out.println(Arrays.toString(chks));
		
		//3输出远程的客户端的ip地址
		System.out.println("request.getRemoteAddr(): "+request.getRemoteAddr());
		System.out.println("request.getRemoteHost() : "+request.getRemoteHost());
		
		//4 getRealPath 真实路径,部署了这个项目的本地磁盘的物理路径
		//文件上传
		//D:\temp210302\apache-tomcat-9.0.0\apache-tomcat-9.0.0.M26\webapps\dy02\
		System.out.println("request.getRealPath :" + request.getRealPath(""));
		
		//getRequestDispatcher =>可以借助这个对象进行页面的转发
		System.out.println("request.getRequestDispatcher(\"\") :"+request.getRequestDispatcher(""));
		
		 //RequestDispatcher dispatcher = request.getRequestDispatcher("succ.html");
		
		 //转发要执行
		// dispatcher.forward(request, response);
		
		
		//得到HttpSession  会话
		HttpSession session = request.getSession();
		
		System.out.println("session : "+session);
		
		//getRequestURI()
		System.out.println("request.getRequestURI(): "+request.getRequestURI());
		System.out.println("request.getRequestURL(): "+request.getRequestURL());
		
		//getMethod
		System.out.println("getMethod :"+request.getMethod());
		
		//getCookies
		Cookie [] cookies = request.getCookies();
		
		System.out.println(Arrays.toString(cookies));
		
		for (Cookie cookie : cookies) {
			System.out.println(cookie.getName()+" : "+cookie.getValue());
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

2.HttpServletResponse的5种常见方法运用

package com.etc.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * @介绍的是HttpServletResponse响应对象的常见方法
 * 1. void addCookie(Cookie cookie)   添加cookie ->场景
 * 2. void sendRedirect(String location)   页面跳转->重定向
 * 3.  PrintWriter getWriter() 得到一个PrintWriter对象,直接在页面打印内容(ajax)
 * 4. void setContentType(String type)  常见 ("application/json;charset=utf-8")  ("text/html;charset=utf-8");
 * 5. void setCharacterEncoding()  设置响应的编码.
 * 
 
 * 
 */
@WebServlet("/HelloResponseServlet")
public class HelloResponseServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public HelloResponseServlet() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

		response.setCharacterEncoding("utf-8");
		
		response.setContentType("text/html;charset=utf-8");
		
		//先创建一个cookie
		Cookie cookie = new Cookie("username", "tom");
		//设置maxage
		cookie.setMaxAge(60*60*24);
		//1. addCookie
		response.addCookie(cookie);
		
		//去 跳转到xx ->servlet html  jsp 外部网站 ->通过按钮点击,或者业务自动跳转。未登录用户跳转到登录界面.
		
		//response.sendRedirect("http://www.baidu.com");
//		response.sendRedirect("succ.html");
		
		//返回值为printWriter
		PrintWriter pw = response.getWriter();
		//打印输出(页面上)
		pw.print("hello");
		pw.print("<script>alert('hello')</script>");
		
		//json字符串()=-->去回看  gson完成访问
		
		
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}
}

3.Servlet四种属性范围

第一个页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>

<%
   //直接写java代码
   //1 servlet: HttpServletRequest  请求  => jsp: request
   //2 servlet: HttpSession  会话    => jsp: session
   //3 serlvet: ServletContext servlet上下文对象 => application
   //4 servlet: PageContext 页面上下文  =>pageContext
   
   // javaee 经典  四种属性范围: 
   //pageContext 中属性无法传递到下一个"页面";只能在当前页面中使用;
   pageContext.setAttribute("u1", "唐玄奘");
   //request 可以向下一个页面传递数据,要求:必须采用转发的形式,可以无限转发,而不能用重定向
   request.setAttribute("u2", "沙悟净");
   //session  可以向下一个页面传递数据,采取的是转发和重定向都可以.但是只能是当前的会话范围;会话结束,数据消失.
   session.setAttribute("u3", "孙悟空");
   //application  可以向下一个页面传递数据,采取的是转发和重定向都可以.可以存储的有效范围是当前项目的应用(重启web容器tomcat则数据消失)
   application.setAttribute("u4", "猪悟能");
   
   //1->从当前页跳转到attribute2.jsp
   response.sendRedirect("attribute2.jsp");
   
   //2->转发
   //request.getRequestDispatcher("attribute2.jsp").forward(request, response);
   
%>

</body>
</html>

第二个页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>attribute2</title>
</head>
<body>

<%
   //直接写java代码
   //1 servlet: HttpServletRequest  请求  => jsp: request
   //2 servlet: HttpSession  会话    => jsp: session
   //3 serlvet: ServletContext servlet上下文对象 => application
   //4 servlet: PageContext 页面上下文  =>pageContext
   
   Object u1 = pageContext.getAttribute("u1");
   
   out.print("u1: "+u1);
   
   Object u2 = request.getAttribute("u2");
   
   out.print("u2: "+u2);
   
   Object u3 = session.getAttribute("u3");
   
   out.print("u3: "+u3);
   
   Object u4 = application.getAttribute("u4");
   
   out.print("u4: "+u4);
   //转发到3
   request.getRequestDispatcher("attribute3.jsp").forward(request, response);
   
%>

</body>
</html>

第三个页面

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>attribute3</title>
</head>
<body>

<%
   //直接写java代码
   //1 servlet: HttpServletRequest  请求  => jsp: request
   //2 servlet: HttpSession  会话    => jsp: session
   //3 serlvet: ServletContext servlet上下文对象 => application
   //4 servlet: PageContext 页面上下文  =>pageContext
   
   Object u1 = pageContext.getAttribute("u1");
   
   out.print("u1: "+u1);
   
   Object u2 = request.getAttribute("u2");
   
   out.print("u2: "+u2);
   
   Object u3 = session.getAttribute("u3");
   
   out.print("u3: "+u3);
   
   Object u4 = application.getAttribute("u4");
   
   out.print("u4: "+u4);
   
   
%>

</body>
</html>

总之,就范围而言,application>session>request>pageContext。

posted on 2022-02-16 19:28  heyiyang1312  阅读(9)  评论(0)    收藏  举报

导航