jsp

作者: ticktackdong | 来源:发表于2018-04-23 17:53 被阅读0次

一.页面元素

页面元素
   1.静态内容,html/css/javascript等内容;
   2.指令,<%@..........%>  <%@ page import="java.util.*"%>
   3.表达式,<%=...........%>,用于输出一段html
   4.Scriptlet,<%...........%>,可以写任何java代码
   5.声明,<%!.............%>,可以声明任何字段或者方法,但是不建议这么做
   6.动作,<jsp:include page="Filename">在jsp页面中包含另一个页面
   7.注释,<%-- ........--%>
R8SGVBZ1I@6XJXPX)_8_Q11.png
<%=%>和 <%out.println()%>
   <%="hero jsp"%>(不需要分号结尾)
   相当于<%out.println("hello jsp");%>(和java一样;结尾)
     out是jsp隐式对象可以直接使用
for循环
AK}YOJ)}O6H5(K(}`C7%A44.png

二.include包含

两种方式

指令include    <%@include file="footer.jsp"%> 
                      内容被插入到包含页面,转译只生成包含页面对应的一个servlet
                     不存在传参问题
动作include     <jsp:include page="footer.jsp">
                      footer内容不会插入到包含页面,转译后footer_jsp.java独立存在。 
                      hello_jsp.java会在服务器端访问footer_jsp.java然后把返回的结果嵌入到响应中
                     在hello.jsp中通过param传参
                       <jsp:include page="footer.jsp">
                        <jsp:param  name="year" value="2017" />
                    </jsp:include>
                    在footer.jsp中通过<%=request.getParameter("year")%>取出参数

三.跳转(服务器端和客户端跳转)

服务器端跳转
             request.getRequestDispatcher("hello.jsp").forward(request, response);
           或<jsp:forward page="hello.jsp"/>
客户端跳转
      response.sendRedirect("hello.jsp");

四.cookie

cookie是一种浏览器和服务器交互数据的方式由服务端创建后发送给浏览器保存在用户本地,下一次访问网站的时候就会把该cookie发送给服务器

setcookie.jsp(web目录下)
 Cookie c = new Cookie("name","Gareen");
    //创建一个cookie
 c.setMaxAge(24*60*60);
   //表示cookie存活的时间
 c.setPath("127.0.0.1");
   //Path表示服务器的主机名,只有浏览器通过这个主机名访问服务器的时候才会提交这个cookie到服务端
 response.addCookie(c);
   //通过response把这个cookie保存在浏览器端
getCookie.jsp
  Cookie[] cookies = request.getCookies();
  if(null!=cookies)
       for(int d=0;d<=cookies.length-1;d++){
            out.print(cookies[d].getName()+":"+cookies[d].getValue()+"<br>");
 }
cookie.png

五.session

 setSession.jsp
           session.setAttribute("name", "teemo");
getSession.jsp
          String name = (String)session.getAttribute("name");

如果浏览器把cookie功能关闭,那么服务端就无法获取jsessionid,每一次访问,都会生成一个新的session对象。

为了解决这个问题,可以使用

response.encodeURL("getSession.jsp"))

response.encodeURL方法会把getSession.jsp这个url转换为

getSession.jsp;jsessionid=22424AEA86ADBE89F335EEB649D997A8

通过这个方式,提交jsessionid到服务器。 服务器根据这个jsessionid匹配到对应的session. 与session相关的功能,就可以正常工作了。
可以通过 d:/tomcat/conf/web.xml 中的session-config 配置进行调整,默认是30分钟

六.作用域

 pageContext当前页面
 requestContext一次请求
 sessionContext当前会话
 applicationContext全局,所有用户共享
 。。。。。。。。。。。。。。。。。

七.隐式对象

  不需要显示定义直接就可以使用的对象
  request,response,out
  pageContext,session,application
  page,config,exception

八.JSTL(JSP Standard Tag Library标准标签库)

    允许开发人员可以像使用HTML标签那样在JSP中开发Java功能,JSTL库有core,fmt等

jstl.jar和standard.jar放在web/WEB-INF/lib下

set/out/remove
   在页面中使用JSTL需要在jsp中 通过指令进行设置
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
  prefix="c" 表示后续的标签使用都会以<c: 开头
  <c:set var="name" value="${'gareen'}" scope="request" />
  在作用域request中设置name,相当于
  <%request.setAttribute("name","gareen")%>
   <c:out value="${name}" />
   相当于 <%=request.getAttribute("name")%>
   <c:remove var="name" scope="request" />
   在作用域request中删掉name,相当于
      <%request.removeAttribute("name")%>
   作用域可以是pageContext, request, session, application
if/else
    <c:if test="${hp<5}">
         //JSTL通过<c:if test=""> 进行条件判断
     </c:if >
      <c:if test="$!(hp<5)">
         //JSTP没有<c:else,所以常用的办法是在<c:if的条件里取反
      </c:if>
      <c:if test="${empty weapon}">
         //empty可以判断对象是否为null,字符串长度是否为0,集合长度是否为0
      </c:if>
choose
  虽然JSTL没有提供else标签,但是提供了一个else功能的标签
      <c:choose>
      <c:when test="${hp<5}">
  </c:when>
  <c:otherwise>
  </c:otherwise>
      </c:choose>
forEach
     <c:forEach items="${heros}" var="hero" varStatus="st"  >
    <tr>
           <td><c:out value="${st.count}" /></td>
           <td><c:out value="${hero}" /></td>
    </tr>
    </c:forEach>
     items="${heros}" 表示遍历的集合
    var="hero" 表示把每一个集合中的元素放在hero上
    varStatus="st" 表示遍历的状态
<c:forTokens
   专门用于字符串拆分,并且可以指定多个分隔符
   <c:set var="heros" value="塔姆,艾克;巴德|雷克赛!卡莉丝塔" />

   <c:forTokens items="${heros}" delims=":;|!" var="hero">
   <c:out value="${hero}" /> <br />
   </c:forTokens>
fmt:formatNumber格式化数字
      fmt标签常用来进行格式化,
      使用之前要加上<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix='fmt' %>
       最少两个小数点:
<fmt:formatNumber type="number" value="${money}" minFractionDigits="2"/>
       最多两个小数点:
 <fmt:formatNumber type="number" value="${pi}" maxFractionDigits="2" />
fmt:formatDate 格式化日期
   <fmt:formatDate value="${now}" pattern="G yyyy年MM月dd日 E"/>
   <fmt:formatDate value="${now}" pattern="a HH:mm:ss.S z"/>
   <fmt:formatDate value="${now}" pattern="yyyy-MM-dd HH:mm:ss"/>
格式化时间.png
fn:
    使用之前加入指令:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 
      ${fn:substring(name, 0, 5)}

九.EL表达式语言

在<%@page 标签里加上isELIgnored="false"
 EL表达式可以从pageContext>request>session>application四个作用域取值(优先级从前到后)${name}
JavaBean
  一.JavaBean标准
    1.提供无参public构造方法
    2.每个属性都有public的getter和setter
    3.如果属性是boolean,那么就对应is和setter方法
二.获取JavaBean的属性,通过.符号操作就可以了
 ${hero.name}自动调用getName方法
 如果属性是boolean类型自动调用isXXX方法
取参/eq条件判断

相关文章

  • 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/bpmllftx.html