JSP

作者: 微笑中的你 | 来源:发表于2018-12-21 15:47 被阅读0次

    Java Server Pages java服务器页面
    是在传统的HTML文件中插入 Java程序段和JSP标记。
    其根本是一个简化的Servlet。

    jsp文件在第一次被访问时会被web容器翻译成servlet。

    • 第一次访问 index.jsp
    • index_jsp.java
    • 翻译成 index_jsp.class运行
    • 可以在 tomcat的work目录中找到。
    • 下一次访问时,如果内容发生了变化,会重新翻译加载

    jsp 常见语法

     <% java 代码 %> 
    java代码会被翻译到servlet中的service方法的内部
    
     <%= java 变量或表达式%>
    会被翻译成service方法内部out.print();
    
     <%! java 代码 %>
    会被翻译成 servlet 的成员内容
    
    
    HTML 注释 在页面中的查看源码中可以看到
    <!-- 这里是注释 -->
    
    java 注释 jsp生成的servlet文件中有,页面看不到
    /* 这里是注释 */
    //单行注释
    
    JSP注释 jsp生成的servlet文件中没有,页面看不到
    <%-- 这里是注释 --%>
    

    jsp 常见指令

    用来设置jsp页面相关信息,以及用于jsp页面间的通信。

    • page 指令
      设置jsp页面相关信息
    <%@ page language="java" contentType="text/html; charset=utf-8"
        pageEncoding="utf-8"%>
    
    常见属性:
    language 目前只支持java
    contentType 用来指定jsp页面的MIME和编码格式,用分号隔开;
    pageEncoding 用来设置文件的编码 默认为 ISO 8859-1 需修改为utf-8
    import  在jsp页面中用来引入java中的package
    session 指定当前页面是否能获取当前用户的session对象,默认为true。如果设置为  
                false,怎不能使用session对象,不然会报500错误。
    errorPage 如果当前页面发送错误,网页会重定向到errorPage指定的页面
    isErrorPage 允许错误处理
    extends jsp页面生成的servlet继承于哪个类。
    buffer 设置缓冲区的大小
    autoFlush 是否自动刷新缓冲区
    isThreadSafe 是否支持多线程访问,默认为true
    info 设置jsp页面的介绍信息
    isELIgnored 是否支持EL表达式
    
    • include 指令
      可以用来包含其它页面
      只生成一个java文件及class文件
    <body>
     <%@ include file="/header.jsp" %>
        <h1>主体</h1>
     <%@ include file="/footer.jsp" %>
    </body>
    
    
    • taglib 指令
      声明jsp文件中使用的标签库:jsp标准标签库,第三方标签库,自定义标签库
    标签动作
    • 页面包含 动态包含 <jsp:include page="/header.jsp"></jsp:include> 生成多个java和class文件
    • 请求转发 <jsp:forward page="/footer.jsp"></jsp:forward>
    隐式对象

    jsp翻译成servlet时,servic方法中存在9个已初始化的对象

    * request
    得到用户请求信息对象
    
    * response
    服务器向客户端的响应对象
    
    * final javax.servlet.jsp.PageContext pageContext
    
    * javax.servlet.http.HttpSession session=null;
    用来保存用户会话的信息
    
    * final javax.servlet.ServletContext  application
    所有用户的共享信息
    
    * final javax.servlet.ServletConfig  config
    服务器的配置,可以取得初始化参数
    
    * javax.servlet.jsp.JspWriter  out=null;
    
    * final java.lang.Object    page=this;
    当前页面转换后的Servlet类的实例
    
    * javax.servlet.jsp.JspWriter _jspx_out=null;
    
    * javax.servlet.jsp.PageContext _jspx_page_context = null;
    
    * exception 
    表示页面发生异常,在错误页中才起作用。只有是错误页面的时候,才会有该对象
    
    out

    为什么ddd在最前面??

    EL 表达式 Express Lanuage

    代替jsp页面中脚本的编写
    作用:获取四大域中的数据

    <body>
    
    <%
    //pageContext 域
        pageContext.setAttribute("name", "张三------pageContext域");
        
    //request 域
        request.setAttribute("age", "11--------request域");
        
    //session 域
        session.setAttribute("address", "杭州---------session域");
    
    //application域
        application.setAttribute("national", "中国-----------application域");
    %>
    
    
    姓名:${pageScope.name }
    <br>
    年龄:${requestScope.age }
    <br>
    地址:${sessionScope.address }
    <br>
    国籍:${applicationScope.national }
    
    <br>
    <hr>
    <br>
    
    <h1></h1> el简写  从四个域去查找,从小到大查找 </h1>
    <br>
    ${name } <br>
    ${age } <br>
    ${address } <br>
    ${national } <br>
    
    <br>
    <hr>
    <br>
    
    ${1+1 }
    <br>
    ${empty name }
    <br>
    
    </body>
    

    JSTL (JSP Standard Tag Library)jsp标准标签库

    可以嵌入在jsp页面中使用标签的形式完成业务逻辑等功能
    JSTL 有5个库:

    • core 核心库
    • i18N 国际化
    • SQL
    • XML
    • Functions
      使用,在lib中加入 jstl-1.2.jar,然后在jsp页面引入
      <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
      jstl标签通常会在jsp页面中配合 EL 表达式使用
    if 标签使用
    <body>
    
    <c:if test="${1==1 }">lxf</c:if>
    
    </body>
    
    foreach 标签使用
    <hr>
    <!-- 遍历字符串集合 -->
    <%
        ArrayList<String> strList = new ArrayList<String>();
        strList.add("aaa");
        strList.add("bbb");
        strList.add("ccc");
        strList.add("ddd");
        
        pageContext.setAttribute("strList", strList);
    %>
    <c:forEach items="${strList }" var="str">
        ${str } <br>
    </c:forEach>
    
    <hr>
    <!-- 遍历自定义对象集合 -->
    <%
        ArrayList<User> userList = new ArrayList<User>();
        User user1 =new User();
        user1.setUsername("lisi");
        userList.add(user1);
        User user2 =new User();
        user2.setUsername("wangwu");
        userList.add(user2);
        User user3 =new User();
        user3.setUsername("chenliu");
        userList.add(user3);
        pageContext.setAttribute("userList", userList);
    %>
    <c:forEach items="${userList }" var="user">
        ${user.username } <br>
    </c:forEach>
    
    <hr>
    <!-- 遍历Map -->
    <%
        HashMap<String, String> person = new HashMap<String, String>();
        person.put("name", "phonegg");
        person.put("sex", "男");
        pageContext.setAttribute("person", person);
    %>
    <c:forEach items="${person }" var="entry">
        ${entry.key }:${entry.value } <br>
    </c:forEach>
    

    相关文章

      网友评论

          本文标题:JSP

          本文链接:https://www.haomeiwen.com/subject/wzgykqtx.html