JSP内置对象+request+response

摘要

讲解了JSP内置的九大对象

JSP内置对象

  1. out - 管客户端的输出
  2. request - 管客户端的请求
  3. response - 向·客户端发出响应
  4. session - 保存BS的会话信息
  5. application - 环境
  6. exception - 异常信息
  7. page - 相当于Java的this
  8. pageContext - JSP的上下文
  9. config - JSP的ServletConfig

out 对象

request 对象

客户端的请求信息

  • 传值和不传值
  • 源码:
  • 文件名:requestTest.jsp

<%@ page language="java"  pageEncoding="gb2312"%>
  <html>
  <body>
  	<!-- 文件名:requestTest.jsp -->
  	<!-- 获取客户端的基本信息 -->
  	<%	// javax.servlet.http.HttpServletRequest  %>
  	客户端的提交方式: <%=request.getMethod() %><br>
  	客户端请求的URL地址: <%=request.getRequestURI() %><br>
	客户端与服务器通信的协议名称: <%=request.getProtocol() %><br>
	客户端请求服务器文件的路径: <%=request.getServletPath() %><br>
	URL的查询部分: <%=request.getQueryString() %><br>
	服务器的名称: <%=request.getServerName() %><br>
	服务器口号: <%=request.getServerPort() %><br>
	远程客户端的IP地址: <%=request.getRemoteAddr()%><br>
	<% //以上获得值全都是String类型 ,<%= 是JSP表达式 %>
	<% //String getParameter(String name)获得客户端传给服务器的name参数的值 %>
	<% //String[] getParameterValues(String name),以数组字符串形式返回指定参数的值 %>
	<%=request.getParameter(a) %><br>
	<%=request.getParameterValues(b) %><br>
	
	<%!  //JSP声明
		String a;
		String b;
	%>
  </body>
  </html>
 

客户端信息
请求信息传值
传值效果
多加两个用法

response 对象

  • 文件1:requestTest1.jsp
<% //文件名:requestTest1.jsp %>

<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
  <html>
  <body>
  		<% //action提交submit后的跳转页面 %>
	   	<form action="responseTest2.jsp" method="post" >
	   	<% //输入学生姓名:<input type="text" name="stuname" > %>
   			<input type="submit" value="提交">
   		</form>
  </body>
</html>

  • 文件2:requestTest2.jsp
<% //文件名:requestTest2.jsp %>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
  <html>
  <body>
    <%	// javax.servlet.http.HttpServletResponse  %>
  	<% //利用response对象进行重定向 %>
	<%	//response内置对象,redirect重定向
		//response.sendRedirect("responseTesdt3.jsp");//相对路径,
		//也可是针对于服务器的绝对路径"/MyWeb/7_/responseTest3.jsp"
		//还可以定向到外部资源,外链如:"https://www.baidu.com",自然是绝对路径了
	 %>
	 <% //JSP动作,作用:页面跳转,
	 	//1.只包含文件的输出内容,相同变量不会报错;2.自动检查被包含文件的变化
	 %>
	 
	 <% //<jsp:forward page="responseTest3.jsp"></jsp:forward>   %>
	 
	 
	 <% 
	 	response.sendError(404);
	 	//还可以用来发送HTTP状态码的出错信息
		//404(资源不存在),403(资源不可用),401,400(语法错误),500(未知错误) 
		%>
  </body>
  </html>

  • 文件3:requestTest3.jsp
<% //文件名:requestTest3.jsp %>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
  <html>
  <body>
	欢迎来到学生管理系统!!!<br>
	<%
		//方法一:
		//String stuname = request.getParameter("stuname");
		//stuname = new String(stuname.getBytes("ISO-8859-1"),"gb2312");
		//out.println("输入学生姓名是:"+stuname+"<br>");
		//方法二:
		//要求:1.取值之前设置request的编码;2.表单form采用的method.post方法提交
		request.setCharacterEncoding("gb2312");
   		out.println("输入学生姓名是:"+request.getParameter("stuname")+"<br>");
   	%>
  </body>
  </html>

重定向

  1. 采用JSP内置对象,网址变换,产生新的请求
    重定向
  2. 采用JSP动作,服务器内部
    jsp动作

中文乱码

中文乱码

  • 两种解决方案:
    中文乱码

变量共享

  1. JSP:forward 动作可以变量共享
  2. response内置对象不可以变量共享
    变量共享

能否访问外部资源

  1. JSP:forward 动作不可以访问外部资源
  2. response内置对象可以
    访问外部资源

不能访问外部资源

HTTP状态码

  1. response内置对象可以向客户端发送出错信息
  2. response.sendError(404);
    报错

HTTP头

  • 可以利用 response 的 setHeader() 来设置HTTP头部信息
  • 实验效果:你会每个五秒听到网页刷新的声音
  • 文件名:response_setHeader.jsp
<% //文件名:response_setHeader.jsp %>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
  <html>
  <body>
    <%
    	//全都表示客户端缓存中不保存页面的拷贝
    	response.setHeader("Pragma","No-cache");
    	response.setHeader("Cache-Control","no-cache");
    	response.setDateHeader("Expires",0);
    	
    	//每隔5秒钟定期刷新一次
    	response.setHeader("Refresh","5");
    %>    
  </body>
  </html>

Cookie操作

  • 传值方式:URL传值、表单form、cookie
  • 文件名:cookieP1.jsp
<% //文件名:cookieP1.jsp %>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
	//定义一个变量:
	String str = "15";
	int number = Integer.parseInt(str);
 %>
 该数字的平方为:<%=number*number %><HR>
 <%
 	//将str存入Cookie
 	Cookie cookie = new Cookie("number",str);
 	//设置Cookie的存活期为600秒
 	//这个时间相对于谁来说的?过期咋整?
 	cookie.setMaxAge(600);
 	//将Cookie保存于客户端
 	response.addCookie(cookie);
 %>
 <a href="cookieP2.jsp">到达p2</a>

  • 文件名:cookieP2.jsp
<% //文件名:cookieP2.jsp %>
<%@ page language="java" import="java.util.*" pageEncoding="gb2312"%>
<%
	//从Cookie获得number
	String str = null;
	Cookie[] cookies = request.getCookies();
	for(int i=0;i<cookies.length;i++){
		if(cookies[i].getName().equals("number")){
			str = cookies[i].getValue();
			break;
		}
	}
	int number = Integer.parseInt(str);
 %>
 该数字的立方为:<%=number*number*number %><HR>

  • Cookie的存放路径:
    Cookie路径
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值