JSP中的几个常用指令

1.forward指令,用于将页面的响应转发到另外的页面,既可以发到静态HTML、也可以转发到动态JSP页面,或者容器中的Servlet

语法:

JSP 1.0版本:

<span style="white-space:pre">	</span><jsp:forward page="{relativeURL| <%=expression%>}"/>
JSP 1.1以上的版本:

<span style="white-space:pre">	</span><jsp:forward page="{relativeURL| <%=expression%>}">
	<span style="white-space:pre">	</span>{<jsp: param.../>}
	</jsp:forward>

第二种方法在与转发时增加额外的请求参数,请求参数值可以通过 HttpServletRequest类的getParameter()方法获取。

例子:

<jsp:forward page="forward-result.jsp">	
			<jsp:param name="age" value="29"/>
		</jsp:forward>

当我们跳转到 forward-result.jsp 页面的时候,可以通过内置对象request来接收那个参数

<%= request.getParameter("age") %>

从表面上看,jsp:forward 指令给人的感觉:它是将用户请求“转发”到另一个新页面,但实际上,jsp:forward 指令并没有重新向新页面发送请求,它只是完全采用了新页面来对用户生成响应--请求依然是一次请求,所以请求参数、请求属性都不会丢失。


2. include指令,动态的include指令,用于包含某个页面

语法格式:

<span style="white-space:pre">	</span><jsp:include page="{relativeURL | <%=expression%> }" flush="true" />
或者是

<jsp:include page="{relativeURL | <%=expression%> }" flush="true" >
			<jsp:param name="xxx" value="xxxx"/>
		</jsp:include>	

forward指令和include指令十分相似,一个采用forward方法,一个采用include方法,区别在于:执行forward的时候,被forward的页面完全代替原有页面;而执行include时,被include的页面只是插入原有页面。简而言之:forward那目标页面代替原有页面,include则拿目标页面插入原有页面。


3.useBean、setProperty、getProperty

这三个指令都与JavaBean相关,一个是初始化一个Java实例,一个为JavaBean实例属性赋值,一个输出JavaBean指令的属性值

useBean:

<span style="white-space:pre">	</span><jsp:useBean id="name" class="classname" scope="page| request | session | application "/>
page为页面有效、request本次请求有效、本次session内有效、application本应用内一直有效

setProperty

<span style="white-space:pre">	</span><jsp:setProperty name="BeanName" property="propertyType" />

4. JSP脚本的9个内置对象

application、config、exception、out、page、pageContext、request、response、session

web应用成为B/S架构应用,其实也是C/S架构的,只是服务器是web服务器,客户端是浏览器;对于大部分浏览器而言,它们通常负责完成三件事

1.向远程服务器送请求、2.读取远程服务器返回的字符串数据、 3.负责根据字符串数据渲染出一个丰富多彩的页面

web服务器中的Servlet的_jspService()方法解析参数、处理用户请求、生成响应数据。

Jsp 与 Servlet 如何交换数据? web服务器提供4个类似Map的结构:application、session、request、page;分别对应整个web应用有效、一次回话有效、本次请求有效、仅当前页面有效;

所以application对象代表web应用本身,通常它可以是多个JSP、Servlet之间的数据实现共享;访问web应用配置参数;

out对象:页面输出流;out.println("<tr>");

request对象:封装着用户的一次请求,有两种情况:GET、POST

GET是在浏览器地址栏输入访问地址所发送的请求或提交表单发送请求;POST为表单提交;

并不是每个表单域都会生成请求参数,而是有name属性的表单域才会生成请求参数

并且GET方式:URL和参数之间以“?”分隔;而多个参数之间以“&”分隔。

如:http://localhost:8080/xxxx/xxxx.jsp?name=aaa&age=28

response对象:大部分时间不需要response响应客户端请求,因为有out对象;由于out对象是JSPWriter实例,是字符流,无法输出非字符内容;当页面需要动态生成一幅位图、或者输出一个PDF文档,这是就需要response对象

还可以使用response来重定向请求,以及用于客户端增加cookie;(response.sendRedirect("xxxx.jsp"))

重定向是response的另一个用处,与forward不同的是,重定向会丢失所有的请求参数和request范围的属性,因为重定向将生成第二次请求,与前一次请求不在用一个request范围内,所以发送一次请求的请求参数和request范围的属性全部丢失。相当于在地址栏里重新输入新地址,发送了第二次请求  

转发(forward)重定向(redirect)
执行forward后,依然是上一次请求执行redirect后生成第二次请求
forward的目标页面可以访问原请求的请求参数,因为依然是同一次请求,所有原请求的请求参数、request范围的属性全部存在redirect的目标页面不能访问原请求的请求参数,因为是第二次请求了,所有原请求的请求参数、request范围内的属性全部丢失
地址栏里请求的URL不会改变地址栏改为重定向的目标URL,相当于在浏览器地址栏里输入心得URL后回车

增加Cookie

Cookie通常用于网站记录客户某些信息,session会随着浏览器的关闭而失效,Cookie会一直存放在客户端机器上,除非超出Cookie的生命期限。

在response的内置对象中提供了方法:  void  addCookie( Cookie  cookie );

<%
		String name=request.getParameter("name");
		Cookie c = new Cookie("username", name);
		c.setMaxAge(24*3600);
		response.addCookie(c);
	%>

访问Cookie:

	<%
		Cookie [ ]  cookies = request.getCookies();
		for(Cookie  c : cookies){
			if(c.getName().equals("username"))  //
				out.println( c.getValue() );
		} 
	%>

session对象

通常用于跟踪用户的会话信息,例如判断用户是否登录系统,或者在购物车应用中,用于跟踪用户购买的商品等等

session.setAttribute("itemMap", itemMap);








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值