JSP开发技术 02(JAVA Web自学笔记03)

JSP内置对象

定义 : 不需要声明和创建,就可以在JSP脚本语言中使用的成员变量

1. jsp内置对象out:
类型 : out.javax.servlet.jsp.JspWriter
主要作用 : 向客户端输出信息
常用方法: print\println\write
PrintWriter:调用一个输出对象

	<% 
		out.println("hello");
	%>
println : 在jsp中不具有换行功能 , 换行需要用到<br>
out输出具有缓冲功能 , PrintWriter没有缓冲功能 , 所以PrintWriter会永远优先输出.

运行结果 :
在这里插入图片描述
2. jsp内置对象request:
类型 : javax.servlet.http.HttpServletRequest
主要作用 : 来自客户端向服务器端发送请求 , 所有的请求都会封装在request对象中
作用域(作用范围) : 就是一次请求
如果用超链接请求,不可以获取信息,视为第二次请求:

test01.jsp:

	<%
		request.setAttribute("username", " zzb");
	%>
	<a href="other.jsp">超链接</a>

test02.jsp:

		username:<%=request.getAttribute("username".toString())%>

运行会报空指针异常错误 / 值为空:
在这里插入图片描述

**常用方法:**
**request.getParameter()获取表单提交的数据
request.getParameterValues()获取表单提交的一组数据(复选框、下拉列表)
request.getParameterDispatcher().forward(request,response)完成请求转发
request.setAttribute(String name, String value);
request.getAttribute(String name);
request.setCharacterEncoding()完成请求编码的设置**

request.getParameter()获取表单提交的数据:

	<form action="#" method="post">
		name:<input type ="text" name ="name"><br>
		age:<input type="text" name="age"><br>
		<input type="submit" value="submit">
	</form>
	<%
		out.println("name : "+request.getParameter("name")+"<br>");
		out.println("age : "+request.getParameter("age")+"<br>");
	%>

表单中获取数据:
输入前:
在这里插入图片描述
输入后:
在这里插入图片描述

request.getParameterValues()获取表单提交的一组数据(复选框、下拉列表):
hobby.html:

	<form action="hobby.jsp" method="post">
	选择爱好:<input type="checkbox" name="hobby" value="reading">阅读
	选择爱好:<input type="checkbox" name="hobby" value="football">足球
	选择爱好:<input type="checkbox" name="hobby" value="music">音乐
	选择爱好:<input type="checkbox" name="hobby" value="travel">旅游<br>
	<input type="submit" value="提交爱好">
	</form>

hobby.jsp:

<%
		String[] hobby = request.getParameterValues("hobby");
		for(int i = 0;i<hobby.length;i++)
		{
			if(hobby[i].equals("reading")){
				out.println("阅读");
			}
			if(hobby[i].equals("football")){
				out.println("足球");
			}
			if(hobby[i].equals("music")){
				out.println("音乐");
			}
			if(hobby[i].equals("travel")){
				out.println("旅游");
			}
		}
	%>

运行结果:
在这里插入图片描述
在这里插入图片描述
request请求转发:

   <%
   	request.setAttribute("username", " zzb");
   	request.getRequestDispatcher("other.jsp").forward(request, response);
   %>

运行结果:
在这里插入图片描述
会直接跳转至下一个页面,并获取数据 , 原因 :请求转发属于服务器内部跳转 , 没有产生心得request请求 , 生命周期没有结束 , 可以获取请求

page也可以直接跳转:

	<%
		request.setAttribute("username", " zzb");
	%>
	<jsp:forward page="other.jsp"> </jsp:forward>

在这里插入图片描述

3.jsp内置对象response:
类型 : javax.servlet.http.HttpServletResponse
主要作用 : 可以通过response对象完成服务器响应客户端
response.getWriter().print()\write()
response.sendRedirect():完成页面跳转 , 属于重定向
重定向 : 相当于重新向服务器发送一次请求,可以跳转访问新的外部网站,可以访问服务器外的网站(baidu.com)

1.forward与request.getRequestDispatcher()属于跳转 , 请求转发 , 没有产生新的request对象 , 所以存储在request对象中的变量仍然可以获取到
2.sendRedirect()属于重新定向 , 在新的页面会产生新的request对象 , 因此 , 存储在原request中的变量就不存在了 , 也就无法获取
3.forward和request.getRequestDispatcher()无法跳转到系统外部资源 , 而senRedirect可以跳转到外部资源
4.forward和request.getRequestDispatcher()完成跳转时 , 地址栏url没有发生变化 , 而 sendRedirect地址栏url发生了变化

4.jsp内置对象session(会话):
客户端与服务器端之间可能需要在一段时间内完成多次的交互过程 , 当客户端第一次访问/链接服务器资源时 , 就会为该客户端创建session , 每一个客户端独享一个session 对象
在这里插入图片描述
类型 : javax.servlet.http.HttpSession
作用域 : 一次会话 , 会话没有结束 , session生命周期没有结束就不会产生新的session
session失效 : ① 服务器服务停止② session会话超时在这里插入图片描述
默认30分钟,可以在中进行修改③ 手动来让session失效(session.invalidate()让session方法失效)在这里插入图片描述
获取不到key1的值value1,因为session已经失效了:
在这里插入图片描述

常用方法:
	1.session.getId():
	只要会话不终止 , id是不会发生变化的 , 没有产生新的session对象
	session.isNew():
	产生新的session
	session.setAttribute()
	session.getAttribute()
<%
	session.setAttribute("name","zzb");
	session.setAttribute("age","21");
	session.setAttribute("sex","male");
	
	out.print("name :"+session.getAttribute("name"));
	out.print("age :"+session.getAttribute("age"));
	out.print("sex :"+session.getAttribute("sex"));
%>

运行结果 :
在这里插入图片描述
session.removeAttribute() :
移除掉数据 , remover不会出现空指针异常 , 可以查看 :

<%
	session.setAttribute("name","zzb");
	session.setAttribute("age","21");
	session.setAttribute("sex","male");
	session.removeAttribute("name");
	out.print("name :"+session.getAttribute("name"));
	out.print("age :"+session.getAttribute("age"));
	out.print("sex :"+session.getAttribute("sex"));
%>

运行结果:
在这里插入图片描述

5.jsp内置对象application :
类型 : javax.servlet.ServletContext 属于服务器全局对象
三个对象共享一个application , 一个修改内部也会改变在这里插入图片描述

	<%
		Integer count = (Integer)application.getAttribute("count");
	if(count == null)
	{
		count = new Integer(0);
		application.setAttribute("count", ++count);
	}
	%>
	你是第<%=count %>位访客!

运行结果:
在这里插入图片描述

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ZZBvos

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值