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) 收藏 举报
浙公网安备 33010602011771号