蒋振飞的博客 - Java提升04:Jsp   
正在加载蒋振飞的博客...
V3.0
蒋振飞的博客

Java提升04:Jsp

发布时间: 2018年10月27日 发布人: 蒋振飞 热度: 359 ℃ 评论数: 0

一、Jsp

    1.jsp

        Java Server Page。

    2. 什么是jsp

        从用户角度看,jsp是一个网页,但从程序员角度看,它其实是一个java类, 它继承了servlet,所以可以直接说jsp就是一个Servlet。

    3.为什么会有jsp

        html 多数情况下用来显示静态内容,但是有时候需要在网页上显示一些动态数据, 比如: 查询所有的学生信息, 根据姓名去查询具体某个学生。这些动作都需要去查询数据库,然后在网页上显示。

    4.怎么用JSP

<%@ 指令名字 %>

    5.常用指令

        1) page指令

            ①language:表明jsp页面中可以写java代码。
            ②contentType:表示该文件类型,告诉浏览器是什么内容类型,以及使用什么编码。
            ③pageEncoding:jsp内容编码。
            ④extends:用于指定jsp翻译成java文件后,继承的父类是谁,一般不用改。
            ⑤import:导包使用的,一般不用手写。
            ⑥session:值可选的有true or false,用于控制在这个jsp页面里面,能够直接使用session对象。
            ⑦errorPage:指的是错误的页面, 值需要给错误的页面路径。
            ⑧isErrorPage:上面的errorPage 用于指定错误的时候跑到哪一个页面去。 那么这个isErroPage , 就是声明某一个页面到底是不是错误的页面。

        2) include指令

            把另外一个页面的所有内容拿过来一起输出,所有的标签元素都包含进来。

<%@ include file="other02.jsp"%>

        3) taglib

            ①uri:标签库路径。
            ②prefix:标签库的别名。

<%@ taglib prefix=""  uri=""%>

    6.JSP 动作标签

        1) jsp:include

            不把包含的页面所有元素标签全部拿过来输出,而是把它的运行结果拿过来。

<jsp:include page="other02.jsp"></jsp:include>

        2) jsp:forward

            前往哪一个页面。  

<jsp:forward page=""></jsp:forward>

            等同于

<% 
    //请求转发
    request.getRequestDispatcher("other02.jsp").forward(request, response);
%>

        3) jsp:param

            在包含某个页面的时候,或者在跳转某个页面的时候,加入这个参数。

<jsp:forward page="other02.jsp">
    <jsp:param value="beijing" name="address"/>
</jsp:forward>

            在other02.jsp中获取参数

<br>收到的参数是:<br>
<%= request.getParameter("address")%>

    7.JSP内置对象

        所谓内置对象,就是可以直接在jsp页面中使用这些对象,不用创建。

        1) 作用域

            表示这些对象可以存值,他们的取值范围有限定。

        2) 作用域范围大小

            pageContext -- request --- session -- application 

        3) 使用作用域来存储数据

<%
    pageContext.setAttribute("name", "page");
    request.setAttribute("name", "request");
    session.setAttribute("name", "session");
    application.setAttribute("name", "application");
%>

        4) 取出四个作用域中的值

<%=pageContext.getAttribute("name")%>
<%=request.getAttribute("name")%>
<%=session.getAttribute("name")%>
<%=application.getAttribute("name")%>

        5) 四个作用域的区别

            ①pageContext 【PageContext】

                作用域仅限于当前的页面。
                还可以获取到其他八个内置对象。

            ②request 【HttpServletRequest】
                作用域仅限于一次请求, 只要服务器对该请求做出了响应,这个域中存的值就没有了。
            ③session 【HttpSession】
                作用域限于一次会话(多次请求与响应)当中。
            ④application 【ServletContext】
                整个工程都可以访问, 服务器关闭后就不能访问了。

        6) 其他

            ①out 【JspWriter】
            ②response  【HttpServletResponse】

先输出response本身要输出的内容,然后才是out里面的内容。
<% out.write("这是使用out对象输出的内容") %>
<% response.getWriter().write("这是response对象输出的内容") %>

            ③exception  【Throwable】
            ④page 【Object】:就是这个jsp翻译成的java类的实例对象
            ⑤config 【ServletConfig】

二、EL表达式

    1.EL表达式

        是为了简化jsp代码,具体一点就是为了简化在jsp里面写的java代码。

    2.写法格式

        ${表达式 }
        注:如果从作用域中取值,会先从小的作用域开始取,如果没有,就往下一个作用域取。 一直把四个作用域取完都没有,就没有显示。

    3.取出4个作用域中存放的值

<br>使用EL表达式取出作用域中的值<br>
		
${ pageScope.name }
${ requestScope.name }
${ sessionScope.name }
${ applicationScope.name }

    4.如果域中所存的是数组

<%
    String [] a = {"aa","bb","cc","dd"};
    pageContext.setAttribute("array", a);
%>

        使用EL表达式取出作用域中数组的值

${array[0]}, ${array[1]}, ${array[2]}, ${array[3]}

    5.如果域中锁存的是集合

${li[0]}, ${li[1]}, ${li[2]}, ${li[3]}

    6.取出Map集合的值

<%
    Map map = new HashMap();
    map.put("name", "zhangsna");
    map.put("age",18);
    map.put("address","北京..");
    map.put("address.aa","深圳..");
    pageContext.setAttribute("map", map);
%>
${map.name}, ${map.age}, ${map.address},${map["address.aa"]}

    7.EL表达式 的11个内置对象

        1) pageContext 

        2) cookie        

        3) 作用域相关对象

            ①pageScope
            ②requestScope
            ③sessionScope
            ④applicationScope

        4) 头信息相关对象

            ①header
            ②headerValues

        5) 参数信息相关对象

            ①param
            ②paramValues

        6) 全局初始化参数

            ①initParam

三、JSTL

    1.JSTL全称

        JSP Standard Tag Library,jsp标准标签库

    2.JSTL作用

        简化jsp的代码编写。 替换 <%%> 写法。 一般与EL表达式配合

    3.使用方法

        ①导入jar文件到工程的WebContent/Web-Inf/lib  jstl.jar standard.jar
        ②在jsp页面上,使用taglib 指令,来引入标签库
        ③注意: 如果想支持 EL表达式,那么引入的标签库必须选择1.1的版本,1.0的版本不支持EL表达式。

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

    4.常用标签

        1) c:set

<!-- 声明一个对象name, 对象的值 zhangsan , 存储到了page(默认) , 指定是session -->
<c:set var="name" value="zhangsan" scope="session"></c:set>
${sessionScope.name }

        2) c:if

<c:set var="age" value="18" ></c:set>
<c:if test="${ age > 26 }">
    年龄大于了26岁...
</c:if>
<c:if test="${ age <= 26 }">
    年龄小于了26岁...
</c:if>

        定义一个变量名 flag  去接收前面表达式的值,然后存在session域中

<c:if test="${ age > 26 }" var="flag" scope="session">
    年龄大于了26岁...
</c:if>

        3) c:forEach

从1 开始遍历到10 ,得到的结果 ,赋值给 i ,并且会存储到page域中, step , 增幅为2, 
<c:forEach begin="1" end="10" var="i" step="2">
    ${i }
</c:forEach>
<!-- items : 表示遍历哪一个对象,注意,这里必须写EL表达式。 
var: 遍历出来的每一个元素用user 去接收。 -->
<c:forEach var="user" items="${list }">
    ${user.name } ----${user.age }
</c:forEach>

打赏 蒋振飞

取消

感谢您的支持,我会继续努力的!

扫码支持
一分也是爱     一块不嫌多

点击 支付宝 或 微信 打赏蒋振飞

打开支付宝扫一扫,即可进行扫码打赏哦

评论列表