⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 12. jsp note.txt

📁 在达内培训java笔记
💻 TXT
📖 第 1 页 / 共 4 页
字号:
      <input type="checkbox" name="habit" value="Music"/>音乐
        </table>
      //提交后,获取输入内容
      ${paramValues.habit[0]}
      ${paramValues.habit[1]}
      ${paramValues.habit[2]}

    4)initParam
      web.xml
      ...
      <context-param>
        <param-name>server</param-name>
        <param-value>Tomcat5.5</param-value>
      </context-param>
      ...
      ${initParam.server} 

    5)header
      ${header["host"]} 
      ${header["accept"]} 
      ${header["user-agent"]} 


 7.可以自由设置是否支持表达式语言
   <%@page isELIgnored="false"%> : default:false  可以使用EL,改成 true 之后,写EL就会报错

   配置web.xml也可达到同样的效果(同时存在,那种起作用?) 
   (禁用脚本和EL)  默认都是false
   ...
   <jsp-config>
     <jsp-property-group>
       <url-pattern>*.jsp</url-pattern>
       <el-ignored>true</el-ignored>               //设置成所有jsp文件都禁用EL
       <scripting-invalid>true</scripting-invalid> //设置成禁用脚本
     </jsp-property-group>
   </jsp-config>
   ....
   页面的page指令设置isELIgnored属性的优先级比web.xml中<el-ignored>设置的高(当然是范围小的生效) 


***************************************************************************************
二、JSTL(JSP Standard Tag Library ) 
 减少java代码,简化页面编写;功能封装,提高可重用性
 1.如何使用JSTL
   1)对于Java EE之前(即J2EE规范1.4及之前版本) 
     a、复制jstl的jar包(jstl.jar,standard.jar)到/WEB-INF/lib
     b、在使用jstl功能的jsp页面中增加指令
        <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>   //核心标签库
        <%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>    
        <%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%> 
        <%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>  //数据库标签库
        <%@taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%> 
        //prefix 表前缀(可改,但通常按这写的用); uri 指向标签库的入口
   2)Java EE规范把jstl作为规范的一部分
     所以现在的jstl-1.2已经包含了原来的jstl.jar , standard.jar

 2.core:核心标签库
   一般用途
   在JSTL中,一般用途的标签主要是指具有输出,设置变量,和错误处理等功能的标签,他们在jsp中使用比较频繁,它们有:
  -----------
  |a、<c:set>|
  -----------
   语法:<c:set value="value" var="varName" [scope= "{page|request|session|application}"]/ >
        <c:set value="value" target="target" property="propertyName"/ >
   这个标签用于在某个范围(page,request,session,application)里面设置特定的值
   (默认为page),或者设置某个已经存在的javabean的属性。
   例子:
     <c:set var="counter" value="200"/>
     ${counter}//输出
     
     <c:set var="tarena">Tarena It Traning Ltd.</c:set>
     ${tarena}

   可以指定范围,默认是page
    <c:set value="20" var="maxIdelTime" scope="session"/>
    ${maxIdelTime}

   设置JavaBean的值
    <jsp:useBean id="girl" class="vo.SuperGirl"/>
    <c:set value="Shirly" target="${girl}" property="name"/>
    <td>girl.name</td>
    <td>${girl.name}</td>

  --------------
  |b、<c:remove>|
  --------------
  语法:
    <c:remove var="varName" [scope= "{page|request|session|application}"]/ >
    它的作用是删除某个变量或者属性。
  例子:
    <c:set value="10000" var="maxUser" scope="application"/>
    <c:set value="10" var="count" scope="session"/>
    <c:set value="10" var="count"/>
    ${maxUser}
    ${count}
    <c:remove var="maxUser" scope="application"/>
    <c:remove var="count" scope="session"/>
    ${maxUser}
    ${count}

  -----------
  |c、<c:out>|
  -----------
  语法:<c:out value="value" [escapeXml]="{true|false}" [default="defaultValue"]/>
  注意:escapeXml的作用是是否将代码交给xml解析器解释,true为交给xml解析器解释(默认),false为交给浏览器解释。
      default 定义缺省值。

  例子:
    <c:set var="sessionZhang3" value="zhang3-s" scope="session"/>
    <c:set var="table" value="<table><tr><td>sessionZhang</td></tr></table>" scope="page"/>
    <c:set var="requestZhang3" value="zhang3-r" scope="request"/>
    <c:out value="以下输出前面设置的属性<br>" escapeXml="false"/>

    <td colspan=2>
        <c:out value="${sessionZhang3}"/><br>
        <c:out value="${table}" escapeXml="false" /><br>//输出表格;escapeXml="true"时只显示字符串
        <c:out value="${requestZhang3}"/><br>
        <c:out value="${nodefined}" default="没有nodefined这个变量"/>
    </td>

  -------------
  |d、<c:catch>|
  -------------
  它的作用是捕捉由嵌套在它里面的标签所抛出来的异常。类似于<%try{}catch{}%>
  语法:<c:catch [var="varName"]>nested actions</c:catch>
  例子:
    <c:catch var="error"><% Integer.parseInt("abc"); %></c:catch>
    <% try{ Integer.parseInt("abc"); }catch(Exception error) {  } %> //等价

     <c:out value="${error}"/>
     <c:out value="${error.message}"/>
     <c:out value="${error.cause}"/>


  控制语句:
  -----------
  |a、 <c:if>|  
  -----------
  语法: 
    <c:if test="testCondition" var="varName" 
    [scope="{page|request|session|application}"]>
       Body内容
    </c:if>  // 注:没有 else 
  例子:
     <c:set var="age" value="16"/>
     <c:if test="${age<18}">
        <h1 align=center>您尚未成年,不能进入游戏中心!</h1>
     </c:if>

  --------------
  |b、<c:choose>|
  --------------
  例子:
    <c:set var="tax" value="5000" />
    <c:choose>
         <c:when test="${tax <=0}">
              您今年没有纳税!
         </c:when>
         <c:when test="${tax<=1000&&tax>0}">
           您今年缴纳的税款为${tax},加油!
         </c:when>
         <c:when test="${tax<=3000&&tax>1000}">
           您今年缴纳的税款为${tax},再接再励哦!
         </c:when>
         <c:otherwise>
           您今年纳税超过了3000元,多谢您为国家的繁荣富强作出了贡献!
         </c:otherwise>
     </c:choose>

  ---------------
  |c、<c:forEach>| 循环
  ---------------
  语法: <c:forEach [var="varName"] items="collection"  [varStatus="varStatusName"]
         [begin="begin"] [end="end"] [step="step"]>
           Body 内容
        </c:forEach>
   items:需要迭代的集合;var:迭代时取集合里的值;
  例子:
    <%  List aList=new ArrayList();
        aList.add("You");       aList.add("are");   aList.add("a");
        aList.add("beautiful"); aList.add("girl");  
        request.setAttribute("aList",aList);  %>
    <center> <table border=1>
       <c:forEach var="word" items="${aList}">
         <tr><td>${word }</td></tr>
       </c:forEach>
    </table> </center>

    <c:forEach items='${header}' var='h'>
       <tr>
         <td><li>Header name:<c:out value="${h.key}"/></li></td>
         <td><li>Header value:<c:out value="${h.value}"/></li></td>
       </tr>
    </c:forEach>

  另外一种用法: (类似 for 循环)
   <c:forEach var="count" begin="10" end="100" step="10">
       <tr><td>
         <c:out value="${count}"/><br>
       </td></tr>
   </c:forEach> 


  URL
  ---------------
  |a、<c:import> |
  ---------------
  相当于<jsp:include>
   <c:import url="footer.jsp" charEncoding="GBK">
      <c:param name="name" value="Java"/>
   </c:import> 

  -----------
  |b、<c:url>|
  -----------
  用于构造URL,主要的用途是URL的重写。
    <c:url var="footer1" value="footer.jsp"/>
    <c:url var="footer2" value="footer.jsp" scope="page">
        <c:param name="name" value="Sofie"/>
    </c:url>
    <c:out value="${footer1}"/>
    <c:out value="${footer2}"/>

    <c:url var="next" value="next.jsp"/>
    <a href="${next}">next</a><br>
       等价于
    <a href="<c:url value='next.jsp'/>">next</a> //在 Html 里可嵌套 JSTL 

  ----------------
  |c、<c:redirect>|
  ----------------
   //等价于 <jsp:forward>
    <c:redirect url="${footer2}"/>
  例如:
    <c:url var="next" value="next.jsp"/>
    <c:redirect url="${next}"/>



 3.SQL
   <sql:setDataSource>
   <sql:query>
   <sql:update>
   <sql:param>

    <!-- 设置数据源 -->
    <%@page contentType="text/html; charset=GBK"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
    <%@taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
      <sql:setDataSource   var="ds"  driver="com.mysql.jdbc.Driver" 
       url="jdbc:mysql://localhost:3306/tarena" 
       user="root" password="11111111" />

  a、查询
    <sql:query var="rs" dataSource="${ds}" sql="select * from users" ></sql:query>
    <c:forEach var="user" items="${rs.rows}">
        <tr>
          <td>${user.userid}</td>
          <td>${user.username}</td>
          <td>${user.password}</td>
          <td>${user.role}</td>
        </tr>
    </c:forEach>

  b、插入记录
    <sql:update dataSource="${ds}" sql="insert into users values(101,'maxwell','123','admin')"
     var="i"></sql:update>
    <hr>插入${i}条记录.

  c、更新记录
    <sql:update dataSource="${ds}"
     sql="UPDATE users SET username='Gavin King' WHERE userid=101" var="i"></sql:update>
    <hr>更新${i}条记录.

	<sql:param>
	 作用:设置sql语句中"?"表示的占位符号的值。
	<sql:update dataSource="${ds}" sql="UPDATE users SET username=? WHERE userid=?" var="i">
    <sql:param value="Rod Johnson" /> //设第一个问号
    <sql:param value="100" />         //设第二个问号
  </sql:update>
  参数等价于
  //pstmt.setString(1,"Rod Johnson");
  //pstmt.setInt(2,100);  













⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -