您的位置:首页 > Web前端 > JavaScript

Jsp

2016-05-24 00:00 351 查看
摘要: jsp表达式,脚本和声明;jsp页面中的指令;隐含对象;开发模式Model2;WEB-INF文件夹的作用;El和JSTL;JSP异常处理

jsp表达式,脚本和声明;jsp页面中的指令;隐含对象;开发模式Model2;WEB-INF文件夹的作用;El和JSTL;JSP异常处理

---------------------------------------------------------------------------------------------------------------------

JSP:Sun公司制定的一种服务器端动态页面技术的组件规范。(主要是HTML中嵌入少量的Java代码)

JSP包含:HTML、注释、Java代码、指令、隐含对象。
一.JSP页面中的HTML包括:HTML标记、CSS、JavaScript。
二.注释:
- <!-- 注释 -->:html注释,注释中的内容如果包含Java代码,这些代码会被执行。
- <%-- 注释 -->:jsp特有的注释,注释中的内容如果包含Java代码,这些代码会被忽略。
三.JSP页面中的Java代码包含以下三种:
1.jsp表达式:<%= ... %>。
- 合法内容:变量、表达式、有返回值的方法。
- 转译成Servlet时的规则:在service()方法中用out.print语句输出该变量、表达式、方法的返回值。
2.jsp小脚本:<%...%>
- 合法内容:能够写在方法里的Java代码片段都可以作为小脚本。
- 转译成Servlet时的规则:原封不动的成为Servlet类的service()方法里的一段代码。
3.jsp声明:<%!...%>
- 合法内容:成员属性或成员方法的声明
- 转译成Servlet时的规则:成为Jsp页面转译成的Servlet类中的成员属性或成员方法。

四.JSP页面中的指令:
1.语法规则:<%@指令名 属性=值 %>
2.作用:控制JSP在转译成Servlet类时生成的内容。
3.常用指令:
- page指令:用于导包、设置页面属性。
- include指令:<%@include file="url" %>,在JSP页面转换成Servlet时,能够将其他页面包含进来。
- taglib指令:

例:<%@page pageEncoding="utf-8" import="java.util.*" %>
<!-- 1.可以直接写静态内容(html/css/js) -->
<!doctype html>
<html>
<head>
<title>第一个JSP</title>
<meta charset="utf-8">
</head>
<body>
<!-- 2.可以写Java:jsp脚本、jsp表达式、jsp声明 -->
<!-- 2.3jsp声明 -->
<%!
public int lf(int n){
return n*n*n;
}
%>
<ul>
<!-- 2.1JSP脚本 -->
<%
for(int i=53;i<=60;i++){
%>
<!-- 2.2jsp表达式 -->
<li><%=lf(i) %></li>
<%
}
%>
</ul>

<!-- 引入date.jsp -->
<%@include file="date.jsp" %>
</body>
</html>

五.JSP页面中的隐含对象:容器自动创建,在jsp文件中可以直接使用的对象。
- 作用:简化对HTTP请求、响应信息的访问。





隐含(内置)对象:
1. request(*):HttpServletRequest
2. response:HttpServletResponse
3. out:JSPWriter,等价于PrintWriter
4. config:ServletConfig
5. application:ServletContext
6. exception:Throwable,当页面发生异常时才能使用
7. session(*):HttpSession,(待补充)
8. page:Object,指代当前的页面,相当于this
9. pageContext(*):PageContext,页面的环境,可以给页面提供数据,
通过该对象可以获取其他8个隐含对象。
隐含对象使用示例:
<%Object obj = request.getAttribute("");%>
<%=request.getAttribute("")%>

------------------------------------------------------------------------------------------------------------------------
JSP运行原理:



JSP转换成Java代码的过程:



开发模式:



WEB-INF文件夹的作用:



-------------------------------------------------------------------------------------------------------------------------
EL和JSTL:
一.EL
1.访问Bean属性:
语法:stu.name/stu["age"]
等价:request.getAttribute("stu").getName()/getAge();
例: <p>姓名:${stu.name }</p>
<p>nian龄:${stu["age"] }</p>
<p>兴趣:${stu.interests[0] }</p>
<!--等价:request.getAttribute("stu").getCourse().getId(); -->
<p>课程:${stu.course.id }</p>

2.EL的取值范围:
默认情况下EL依次从四个对象取值:
page/request*/session*/application
这四个对象称为EL的取值范围。
举例:stu.name
1.page.getAttribute("stu").getName();
2.request.getAttribute("stu").getName();
3.session.getAttribute("stu").getName();
4.application.getAttribute("stu").getName();

可以明确指定取值范围:
sessionScope.stu.name
applicationScope.stu.name
例 <p>范围:${requestScope.stu.name }</p>

3.EL取值是可以进行运算:
算数运算/关系运算/逻辑运算/判空运算
例 <p>nian龄-5:${stu.age-5 }</p>
<p>大于20吗:${stu.age>20 }</p>
<p>20-30之间:${stu.age>=20 && stu.age<=30 }</p>
<p>判空:${empty stu }</p>
<p>判空:${stu==null }</p>

4.EL可以获取请求参数
param.user -> request.getParameter("user");
paramValues.city -> request.getParameterValues("city");
例 <p>参数:${param.user }</p>

二.JSTL : 需要配置:<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
1.if的用法:
<p>
<c:if test="${stu.gender=='M' }">男</c:if>
<c:if test="${stu.gender=='F' }">女</c:if>
</p>
2.choose的用法(类似if else):
<p>
<c:choose>
<c:when test="${stu.gender=='M' }">男</c:when>
<c:otherwise>女</c:otherwise>
</c:choose>
</p>
3.forEach的用法:
varStatus用来声明循环状态,forEach在做循环时,会自动创建一个状态对象来记录
循环相关的状态数据,如循环次数等。varStatus就是给这个对象命名的,以便于之后引用.
例 <p>
<c:forEach items="${stu.interests }" var="i" varStatus="s">
${i } ${s.index }
</c:forEach>
</p>

4.JSTL原理:



--------------------------------------------------------------------------------------------------------------------------
JSP异常处理:
一.容器中声明式处理:
<!-- 1.指定某类型的异常对应某错误页面。 -->
<!-- <error-page>
<exception-type>java.lang.Exception</exception-type>
<location>/WEB-INF/error.jsp</location>
</error-page> -->

<!-- 2.指定某编号的错误对应某错误页面 -->
<error-page>
<error-code>404</error-code>
<location>/WEB-INF/error.jsp</location>
</error-page>
<error-page>
<error-code>405</error-code>
<location>/WEB-INF/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/WEB-INF/error.jsp</location>
</error-page>

二.编程式的一场处理:
try{
//...
}catch(Exception e){
request.getRequestDispatcher(url).forword(req,res);
}

三.应用场景:对于程序本身的异常用编程式处理,如空指针,对于系统级别的异常最好使用声明式处理,如数据库连接不上.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: