JSP

作者: CoderHong | 来源:发表于2017-11-12 12:51 被阅读11次

一、JSP概述

jsp是服务器页面 运行在服务端。将内容的生成与信息的展示相分离。本质上就是一个Servlet。产生的java文件和class保留在tomcat的word目录下。

二、JSP脚本

java代码片段
格式:

<% 
    java代码
%> 

2. 输出表达式 相当于相当于out.print();

<%= 输出表达式%> 

3. 成员变量的声明

<%!  %> 

三、JSP指令

新建一个jsp文件。第一行内容 就是jsp的page指令。

Snip20171112_9.png

3.1常见的指令
page
该指令的作用:主要声明jsp页面的一些属性。
书写的格式:

<%@ page 属性="值" 属性="值"%>

常见的属性:

  • 重要的属性:
    • contentType:设置响应流的编码 以及通知浏览器用什么打开 设置文件的mime类型
    • pageEncoding:设置页面的编码
      • 提示:两者都出现,各自使用各自的编码,若两者出现一个,就使用出现的编码,两者都不出现 使用服务器默认的编码 ISO8859-1缺点不支持中文。
    • import: 导入所需要的jar包
  • 了解的属性
    • language:当前jsp页面可以嵌套的语言。目前只支持Java语言。
    • autoFlush: 自动刷新 默认为true
    • session="true" jsp页面是否可以使用session这个内置对象
    • isELIgnored 是否忽略EL表达式

include
静态包含

  • 书写格式
<%@include file="相对路径或者内部路径" %>

taglib
导入标签库

  • 书写格式
<%@taglib prefix="前缀名" uri="名称空间" %>
调用标签库方法
<前缀名:方法名></前缀名:方法名>

四、JSP内置的对象(9大内置对象)

内置对象 描述
out right-aligned
request 相当于与Servlet的HttpServletRequest)
response 相当于与Servlet的HttpServletResonse)
session 相当于与Servlet的HttpSession
page
config ServletConfig
application 相当于与Servlet的ServletContext(全局管理者)
pageContext 是当前页面的一个域对象
exception 异常

五、JSP的域对象

内置对象 作用域
application 整个项目
session 一次回话
request 一次请求
pageContext 一个页面中

以上三个JSP的域对象很好理解,pageContext这个是之前没有遇到的域对象。
开发中只用pageContext在jsp中获取项目名

${pageContext.request.contextPath } 
/项目名

pageContext的作用

  1. 可以操作其他的域对象
pageContext.setAttribute("rkey", "rvalue", pageContext.APPLICATION_SCOPE);
pageContext.setAttribute("rkey", "rvalue", pageContext.SESSION_SCOPE);
pageContext.setAttribute("rkey", "rvalue", pageContext.REQUEST_SCOPE);

提示:这种操作比较麻烦,看法中一般不用,直接操作域对象。不通过pageContext获取。

  1. 获取其他的内置对象
getReauest():获取request内置对象

3.便捷查找
依次从pageContext request session application中查找相应的属性,如果查不到返回一个null。

pageContext.findAttribute(arg0);

六、JSP的动作标签

<jsp:forward page="请求转发"></jsp:forward>  内部路径 相当于Servlet转发
<jsp:include page="动态包含"></jsp:include> 

七、EL

JSP的内置表达式语言 从JSP2.0开始支持的。用来替代<%= %>

el 11个内置的对象

内置对象
pageScope
requestScope
sessionScope
applicationScope
param
paramValues
header
headerValues
initParam
cookie
pageContext

除了pageContext其余获取的全是map集合。
常见用法:

  1. 获取域中的数据
  • 获取简单的数据
${applicationScope| sessionScope| requestScope.属性名 } 这种写法比较麻烦
简单写法
便捷方式
${属性名 }
底层调用的是 pageContext的 findAttribute(String key);
  • 获取复杂的数据
    • 数组
    • list
    • map
      下面是具体的写法示例;
<body>
    
    <%
    /*域中数组数据  */
        String[] arr = new String[]{"jake", "rose", "jim"};
        session.setAttribute("names", arr);
    
    /*域中list数据*/    
        List list = new ArrayList();
        list.add("Jake");
        list.add("rose");
        list.add("jim");
        
        request.setAttribute("list", list);
        
    /*域中map数据*/
        Map user = new HashMap();
        user.put("name", "Jake");
        user.put("age", 12);
        
        application.setAttribute("user", user);
        
        pageContext.setAttribute("pkey", "pvalue");
    %>
    
    <hr>
    获取session域中的数组数据:
    老的方式:<br>
    ${sessionScope.names[1] }<br>
    便捷方式:<br>
    ${names[0] }
    
    <hr>
    获取session域中的数组数据:<br>
    老的方式:<br>
    ${requestScope.list[1] }<br>
    便捷方式:<br>
    ${list[0]} 
    
    <hr>
    获取session域中的Map数据:<br>
    老的方式:<br>
    ${applicationScope.user.name }<br>
    便捷方式:<br>
    ${user.name} 
    
</body>

Javabean导航

javaBean规范:
        1.必须是以个公共具体的类 public class
        2.提供私有的字段
        3.提供公共访问的字段的setter getter方法
        4.提供一个无参的构造器

八、jstl

jsp标准的标签库语言 就是替代java脚本的
常用的iffor

第一步就是导入jar包

  • jstl.jar
  • standard.jar
    第二步在jsp文件导入库


    Snip20171112_10.png

jstl的核心类库:

  • core: 核心类库
  • fmt: 格式化| 国际化
  • sql:过时了
  • 函数库:很少使用

c:if

<!-- 最常见的写法 -->
    <c:if test="${3>4 }">
        3大于4
    </c:if>

c:for
下面有list、map、各种用法示例:

<body>
     
     <%
     
        List i = new ArrayList();
        i.add("11");
        i.add("22");
        i.add("33");
        i.add("44");
        
     // 往request域中放入一个list
        request.setAttribute("list", i);
     
        Set s = new HashSet();
        s.add("rose");
        s.add("jake");
        
        request.setAttribute("set", s);
        
        Map m = new HashMap();
        m.put("username", "tom");
        m.put("age", "18");
        // 往域中放入一个map
        request.setAttribute("map", m);
     %>
     
     <c:forEach items="${list }" var="n">
        ${n }
     </c:forEach>
     
     <c:forEach items="${set }" var="n" varStatus="vs">
        ${n } ----索引i=${vs.count }<br>
     </c:forEach>
     
     <c:forEach items="${map }" var="en">
        ${en.key }----${en.value }<br>
     </c:forEach>

    
</body>

相关文章

  • java基础-day43-JSP

    JSP 1. JSP 1.1 JSP概述 1.2 为什么要用JSP 1.3 JSP语法 1.3.1 JSP语法格式...

  • jsp学习 EL JSTL C标签

    JSP 第一个JSP程序 JSP对比servlet JSP中java脚本元素 JSP原理 JSP的翻译规则 JSP...

  • JSP基础学习笔记(3)--JavaBean

    JSP动作标签:

  • 用session对象实现用户登录

    index.jsp deal.jsp main.jsp exit.jsp

  • JavaWeb之JSP

    八、JSP 目录:什么是JSP、JSP原理、JSP基础语法、JSP指令、9大内置对象、JSP标签 JSTL标签 E...

  • jsp语法

    Jsp语法包含:注释、jsp指令、jsp脚本元素、jsp动作元素。 Jsp注释: Htm...

  • jsp

    jsp介绍 jsp语法 jsp指令 EL表达式 自定义标签 jsp指令 - page jsp指令 - includ...

  • JSP入门

    JSP的基本语法:1.JSP声明语法。2、JSP程序脚本。3、JSP脚本注释。4、JSP内容输出表达式。5、JSP...

  • jsp的内置标签

    jsp:forward 重定向标签

  • Java面试问题

    1、JSP: jsp和servlet的区别 jsp本质就是Servlet,jsp的工作原理是:JSP页面在执行的时...

网友评论

      本文标题:JSP

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