Jsp

1.四大作用域九大内置对象
  四大作用域:page域,request域,session域,application域
  九大内置对象:
    内置对象名    类型
    request    HttpServletRequest
    response   HttpServletResponse
    config   ServletConfig
    application  ServletContext
    session   HttpSession
    exception   Throwable
    page   Object(this)
    out    JspWriter
    pageContext  PageContext
2.什么是Jsp,为什么使用Jsp
Java server page 用java语言写的服务器端的页面
HTML写的是静态页面,Jsp是写动态页面的,Jsp=HTML+Java.Jsp里既可以写HTML代码,也可以写Java代码.Jsp可以取代servlet,servlet也可取代Jsp;可以前后台分离.
3.Jsp的组成
  jsp页面有数据模板和元素组成.
  数据模板:Jsp容器不进行处理的部分,如Jsp中的HTML内容,这些内容会直接发送到客户端.
  元素:Jsp容器必须处理的部分,元素有三种类型:
   -指令元素
   -脚本元素
   -动作元素
4.指令
  指令元素的作用:用于在Jsp转换为servlet阶段提供Jsp页面的相关信息;指令元素不会产生任何的输出到当前的输出流中.
  指令元素的三种指令:page指令,include指令,taglib指令
  指令元素语法:<%@指令 属性名="属性值" 属性名="属性值"...%>
  4.1page
  page指令作用于整个Jsp页面,定义了与页面相关的一些属性;page指令定义的属性被用于和Jsp进行通信;<%@page 属性名="属性值" 属性名="属性值"...%>
  在这里插入图片描述
  4.2include
  include用于在Jsp页面中静态包含一个文件(可以是Jsp,HTML页面,文本或者Java代码);Jsp页面在转化为servlet时,会在其中插入包含的文本或者代码;<%@include file="index.jsp"%>
  4.3taglib
  taglib允许页面使用用户定制的标签;<%@taglib uri="..." prefix="..."%>;uri该属性唯一的标识和前缀先关的标签库描述符,prefix属性指标签名前缀,用于区分多个自定义标签.
5.脚本元素
脚本元素包含三个部分:脚本段<%%>,脚本段是一段Java代码,用于描述在请求的响应中要做的操作;声明元素<%!%>,用于声明在其他脚本元素中可能需要使用的变量和方法;表达式<%=%>,是Java语言中完整的表达式,在响应请求是被计算,计算的结果将被转换为字符串,插入到输出流中,输出至客户端.
5.1脚本段
<%String s = "hello world"; %>
5.2声明元素
<%!String s= "hello world";public void hh(){
System.out.print(s);}%>
<!--调用方法-->
<% hh(); %>
在这里插入图片描述
5.3表达式(输出内容到页面)
<!--直接输出x则不能正确显示 ()中必须是一个字符串-->
<%int x=1; out.write(x+"");%>  
<%=s%>  <!--相当于out.write("xxx");-->
在这里插入图片描述
  <%int x=1; out.write(x);%>  在这里插入图片描述
  
6.动作元素
jsp:include,在页面被请求的时候引入一个文件;jsp:useBean,寻找或者实例化一个JavaBean;jsp:SetProperty.设置JavaBean的属性;jsp:getProperty,输出某个JavaBean的属性;jsp:forward,把请求转到一个新的页面;等等
6.1<jsp:include>
<jsp:include>用来包含静态和动态的文件,该动作把指定文件插入正在生成的页面.
<jsp:include page="相对URL地址" flush="true"/>,include指令是在JSP文件转换为servlet是引入文件,而jsp:include是在页面被请求是插入文件;page:包含在页面中的相对URL地址;flush:定义在包含资源前是否刷新缓存区.
6.2<jsp:useBean>
<jsp:useBean>用来加载一个将在jsp页面使用的JavaBean.
<jsp:useBean id="name" class="package.class"/>再类载入后,可以通过jsp:setProperty和jsp:getProperty动作来修改和检索bean的属性;class:指定Bean的完整包名;type:指定将引用该对象变量的类型;beanName:通过java.beans.Beans 的 instantiate() 方法指定Bean的名字.
6.3<jsp:setProperty>
<jsp:setProperty>用来设置已经实例化的Bean对象的属性;有两种用法:
1.<jsp:useBean id=“aimuti” … />

<jsp:setProperty name=“aimuti” property=“someProperty” …/>
此时,不管jsp:useBean是找到了一个现有的Bean,还是新创建了一个Bean实例,jsp:setProperty都会执行。
2.<jsp:useBean id=“aimuti” … >

<jsp:setProperty name=“aimuti” property=“someProperty” …/>
</jsp:useBean>
此时,jsp:setProperty只有在新建Bean实例时才会执行。
name:指定设置属性的Bean;property:表示要设置哪个属性,如果property的值是"*",表示所有名字和Bean属性名字匹配的请求参数都将被传递给相应的属性set方法;value:用来指定Bean属性的值;param:指定用哪个请求参数作为Bean属性的值;value和param不能同时使用.
6.4<jsp:getProperty>
<jsp:getProperty>是提取指Bean属性的值,转换为字符串,然后输出.
<jsp:useBean id=“aimuti” … />

<jsp:getProperty name=“aimuti” property=“someProperty” …/>
name:要检索的Bean属性名称,Bean必须是已定义过的;property:表示要提取的Bean属性的值.
6.5<jsp:forward>
<jsp:forward>把请求转到另外的页面,jsp:forward只有一个属性page.
<jsp:forward page="相对URL地址"/>,page:包含的是一个相对URL,page的值既可以直接给出,也可以在请求的时候动态计算,可以使一个Jsp页面或者一个servlet.
7.域测试
index.jsp(直接在本页面获取值)

<body>
	<%
		//设置值
		pageContext.setAttribute("page", "pageValue");
		request.setAttribute("request", "requestValue");
		session.setAttribute("session", "sessionValue");
		application.setAttribute("application", 123);
	%>

	<%
		//获取值
		String p = (String) pageContext.getAttribute("page");
		String req = (String) request.getAttribute("request");
		String sess = (String) session.getAttribute("session");
		int a = (int) application.getAttribute("application");
	%>
	
	<%=p %><br>
	<%=req %><br>
	<%=sess %><br>
	<%=a %><br>
</body>
	

在这里插入图片描述
index2.jsp(跳转到index3.jsp获取值)

<body>
	<%
		//设置值
		pageContext.setAttribute("page", "pageValue");
		request.setAttribute("request", "requestValue");
		session.setAttribute("session", "sessionValue");
		application.setAttribute("application", 123);
	%>

	<%
		//获取值
		String p = (String) pageContext.getAttribute("page");
		String req = (String) request.getAttribute("request");
		String sess = (String) session.getAttribute("session");
		int a = (int) application.getAttribute("application");
	%>
	
	<%=p %><br>
	<%=req %><br>
	<%=sess %><br>
	<%=a %><br>
	
	<!-- 跳转页面 -->
	 <jsp:forward page="index3.jsp"></jsp:forward> 
</body>

index3.jsp(获取index2.jsp设置的值)

<body>
	<%
		//获取值
		String p = (String) pageContext.getAttribute("page");
		String req = (String) request.getAttribute("request");
		String sess = (String) session.getAttribute("session");
		int a = (int) application.getAttribute("application");
	%>
	
	<%=p %><br>
	<%=req %><br>
	<%=sess %><br>
	<%=a %><br>
</body>

在这里插入图片描述
index2.jsp转发到index3.jsp里,page只能在当前页面获取;request可以获取;session也可以获取;application也可以获取

index4.jsp(获取index2.jsp中设置的值)

<body>
	<%
		//获取值
		String p = (String) pageContext.getAttribute("page");
		String req = (String) request.getAttribute("request");
		String sess = (String) session.getAttribute("session");
		int a = (int) application.getAttribute("application");
	%>
	
	<%=p %><br>
	<%=req %><br>
	<%=sess %><br>
	<%=a %><br>
	
</body>

在这里插入图片描述
  page获取不到;request也获取不到(不是一次请求);session可以获取;application也可以获取.
  换一个新的浏览器开启一个新的对话则page,request,session都获取不到,application还可以获取到.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值