JSP

注解

 注释:
    显式注释:浏览器可以看到的注释,可以给用户看的注释
        继承html的注释:<!--  -->
        <!-- 继承html的注释 -->
    隐式注释:浏览器无法看到的注释,不给用户看的
        继承java风格的注释://  /* */
        JSP特有的注释:&lt;%-- --%&gt;
        <%-- JSP特有的注释 --%>

scriptlet脚本小程序

第一种:(&lt;%	%&gt;)
	java脚本段,可以定义局部变量、编写语句,通过jsp引擎翻译后其实就是写在了_jspServlet()方法体中
	例如:
            <%
                int a = 0;
                int b = 1;
                System.out.println(a+b);
                response.getWriter().write(""+(a+b));
                out.write(""+(a+b));
            %>
第二种:(&lt;%!	%&gt;)
	声明,可以定义全局(成员)变量、方法、类,通过jsp引擎翻译后,写在了里面
	例如:
            <%!
                int c = 8;
            %>
第三种:(&lt%=	%&gt;)
        表达式,数据、一个变量或具体内容
        就相当于 &lt;% out.write("内容");  %&gt; 的缩写
	例如:
		<%="hellojsp" %>

指令标签

格式:
	&lt;%@ 	指令标签名称	属性1=值1	 属性2=值2		%&gt
1. Page指令标签
	格式:&lt%@ page 	属性1=值1	 属性2=值2		%&gt
	属性:
		language:指定当前jsp所使用的语言,目前只有java
		contentType:指定响应类型,指定编码字符集
		pageEncoding:指定编码字符集,优先级:charser>pageEncoding>默认ISO-8859-1
		import:导包
		errorPage:指定当前页面报错时跳转的错误页面,需要在错误页面打印错误信息 exception 需要设置 					isErrorPage="true" 指定所有页面报错跳转,通过配置web.xml 如下;
					<error-page>
                        <error-code>500</error-code><!-- 设置错误码 -->
                        <location>/error.jsp</location><!-- 指定错误页面路径 -->
                    </error-page>
		
2. include指令标签(静态包含)
	为什么要用?
		因为有些页面有相同部分,相同的内容直接提取出来生成单独的页面,每次要使用的时候只需要包含即可而且当		 要修改相同部分内容的时候,只需要修改提取出来的文件即可
	格式:
		<%@	include	file="要包含的路径"	%>
	为什么不能声明相同的变量?
		就相当于将包含页面的内容复制黏贴到了标签所在位置,经过JSP引擎翻译后只生成一个文件
	优缺点:
		运行效率高一点点。耦合性较高,不够灵活

动作标签

1. include动作标签(动态包含)
	格式:
		<jsp:include	page="指定动态包含页面的路径"></jsp:include>
	注意:
		注意:通过JSP引擎翻译后生成多个文件,相当于方法的调用,所以和静态包含不一样,不会发生变量冲突除非		  要通过子标签来传递参数,否则不要在标签内部加任何内容包括空格	
2. forward请求转发
	格式:	
		<jsp:forward	page="请求转发的路径"></jsp:forward>相当于
		request.getRequestDispatch("请求转发的路径").forward(request,response)
	JSP四大域对象
		1.	pagecontext
		2.	request
		3.	session
		4.	application
		往四大域对象中存数据
			pageContext.setAttribute("uname", "zhangsan");
            request.setAttribute("uname", "lisi");
            session.setAttribute("uname", "wangwu");
            application.setAttribute("uname", "zhaoliu");
         从四大域对象中取数据
         	pageContext中:<%=pageContext.getAttribute("uname") %><br> <!-- null -->
            request中:<%=request.getAttribute("uname") %><br>
            session中:<%=session.getAttribute("uname") %><br>
            application中:<%=application.getAttribute("uname") %><br>
         	
	
	
	设置属性:
	<%
        pageContext.setAttribute("uname", "xiaohong");/* 当前页面有效 */
        request.setAttribute("uname", "xiaobai");/* 一次请求有效 */
        pageContext.setAttribute("uname", "xiaohei", pageContext.SESSION_SCOPE);/* 通过	   		 pageContext往session中存数据 */
        pageContext.setAttribute("uname", "dahong", pageContext.APPLICATION_SCOPE);/* 通过  		  pageContext往application中存数据 */
	%>
	获取属性:
		pageContext中的uname:<%=pageContext.getAttribute("uname") %>
		request中的uname:<%=request.getAttribute("uname") %>

useBean

格式:
	<jsp:useBean	id="对象的别名"	scope="设定对象存储在哪一个域对象"	class="类的全限定名">		</jsp:useBean>
	<!-- 
					相当于已经new了一个对象
					if(user == null){
						user = new 类名();
					}
	-->
	jsp:setProperty:给对象设置属性
		<jsp:setProperty property="属性名" name="对象的别名" value="属性值"/>
		
	jsp:getProperty:获取对象中的属性值
		<jsp:getProperty property="属性名" name="对象的别名"/>

el表达式

格式
	${域对象中键的名称}	→	将返回域对象响应的值
	获取域对象中对象指定属性对应的值:
			${域对象中键的名称.属性名 }
			
	判断域对象中指定键对应的值是否为空:
			${empty 键的名称 }
			
	判断域对象中指定键对应的值是否相等:
			${键1==键2 }
	注意:
	从小到大获取域对象中的数据,如果都没有则显示"",
	获取指定域对象中的数据:${域对象名称Scope.uname }
		1. pageContext中: ${pageScope.uname}
        2. request中:${requestScope.uname }
		3. session中:${sessionScope.uname }
		4. application中:${applicationScope.uname }
	el表达式获取List数据:
            <%
                List list = new ArrayList();
                list.add("a");
                list.add("b");
                list.add("c");
                request.setAttribute("list", list);
            %>
	获取list中指定数据:${list[1] }<br>
	判断是否为空:	${empty list[3] }<br>
	
	el表达式获取map数据:
            <%
                Map<String,String> map = new HashMap<String,String>();
                map.put("a","1");
                map.put("b","2");
                map.put("c","1");
                request.setAttribute("map", map);
            %>
            ${map["a"] }
            ${map.a }
	
	el表达式运算:
            <%
                request.setAttribute("a", "1");
                request.setAttribute("b", 1);
                request.setAttribute("c", 2);
                request.setAttribute("d", "1");
            %>
	加法:${a+c }<br>
	判断是否相等:1${a==d }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值