18JSP
Posted 功不唐捐 玉汝于成
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了18JSP相关的知识,希望对你有一定的参考价值。
一、概述
二、JSP原理
JSP解析HTML直接写回客户端,解析Java按原样输出
JSP在第一次被访问时会被Web容器翻译成Servlet再执行
过程:
第一次访问---->helloServlet.jsp---->helloServlet_jsp.java---->编译运行
被翻译后的servlet在Tomcat的work目录中可以找到
三、JSP的最佳实践
四、JSP的基本语法
1、JSP模版元素
2、JSP的脚本
3、JSP注释
4、3指令
page指令、Include指令、taglib指令
5、6动作
6、9内置对象(重要)
五、jsp的3个指令
<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”...%>
1 <%@ 指令名称 属性1=“属性值1”%> 2 <%@ 指令名称 属性2=“属性值2”%>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
1 <%@ page language="java" %> 2 <%@ page import="java.util.*" %>
1、page
<%@ page import="java.util.Date,java.util.List"%>
1 <%@ page import="java.util.Date"%> 2 <%@ page import="java.util.List"%>
1 import java.lang.*; 2 import javax.servlet.*; 3 import javax.servlet.http.*; 4 import javax.servlet.jsp.*;
<%@ page pageEncoding="gbk" %>
2、include
<%@ include file="/include/header.jsp" %>
<jsp:include page="/include/header.jsp"></jsp:include>
3、taglib
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
六、jsp的6个动作
1 <jsp:include > // 动态包含 2 <jsp:forward> // 请求转发 3 <jsp:param> // 设置请求参数
1 <jsp:useBean> // 创建一个对象 2 <jsp:setProperty> // 给指定的对象属性赋值 3 <jsp:getProperty> // 取出指定对象的属性值
七、jsp的9个内置对象
1、本身也是一个域对象
1 void setAttribute(String name,Object o); 2 Object getAttribute(String name); 3 void removeAttribute(String name);
1 void setAttribute(String name,Object o,int Scope); 2 Object getAttribute(String name,int Scope); 3 void removeAttribute(String name,int Scope);
findAttribute(String name); // 自动从page request session application依次查找,找到了就取值,结束查找。(重要)
request:得到用户请求信息
response:服务器向客户端的回应信息
四大作用域的总结:
page域:当前jsp页面范围
request域:一次请求
session域:一次会话
application域:整个web应用
2、它可以创建其它的8个隐式对象
3、提供了的简易方法
1 pageContext.forward("2.jsp"); 2 pageContext.include("2.jsp");
八、四大域对象:实际开发
九、EL表达式
1、EL概述和基本语法
<!--JSP脚本--> <%-- User u = (User)request.getAttribute("u"); out.print(u); --%> <!--EL表达式--!> ${u }
必须通过setAttribute才能通过getter(.)取值
2、EL的具体功能
EL获得pageContext域中的值:
$(pageContextScope.key);
EL获得request域中的值:
$(request.key);
EL获得session域中的值:
$(session.key);
EL获得application域中的值:
$(application.key);
EL从四个域中获得某个值$(key);
同样是依次从pageContext域,request域,session域,application域中 获取属性,在某个域中获取后将不在向后寻找
<!--JSP脚本--> <%-- User u = (User)request.getAttribute("u"); out.print(u.getName()); --%> <!--EL表达式--!> ${u.name}
属性导航
${u.address.city }
三元运算符
${empty list ? "是" : "否"}
1 <% 2 pageContext.setAttribute("gender", "1"); 3 %> 4 <input type="radio" name="sex" ${gender==0 ? "checked=\'checked\'" : ""}/>男 5 <input type="radio" name="sex" ${gender==0 ? "checked=\'checked\'" : ""}/>女
(3)隐式对象:11个
相当于
<%=pageContext.getRequest().getContextPath%>
获得WEB应用的名称
十、JSTL
1、什么是JSTL
2、JSTL的作用
3、使用JSTL
<%@ taglib uri="http://java.sun/com/jsp/jstl/core" prefix="c" %>
第三个,在开始处加入
<c:if test=""></c:if>
4、常用标签介绍
(2) 条件标签:if choose
1 <c:forEach var="i" begin="2" end="10" step="2"> 2 <hr/>${i } 3 </c:forEach>
var:声明变量
begin:初始化
end:结束条件
step:步长
2.迭带器
// 遍历:list set map和数组 List list = new ArrayList(); list.add("aaa"); list.add("bbb"); list.add("ccc"); pageContext.setAttribute("list”, list);
for(类型 变量名:数组或集合)
1 <c:forEach items="${list}" var="1" varStatus="vs"> 2 <tr class=“${vs.index%2==0?\'odd\' : \'even\'}”> 3 <td>${1}</td> 4 <td>${vs.index}</td> 5 <td>${vs.count}</td> 6 <td>${vs.first}</td> 7 <td>${vs.last}</td> 8 </tr> 9 </c:forEach>
<style type="text/css"> .odd{ background-color:#c3f3c3; } .even{ background-color:#f3c3f3; } </style>
以上是关于18JSP的主要内容,如果未能解决你的问题,请参考以下文章