Java jsp详解

JSP介绍

1.jsp介绍
  JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种
  用于开发动态web资源的技术。JSP实际上就是Servlet。
  jsp = html + java
  html:静态内容
  servlet:适合编写java逻辑代码
  jsp:适合编写输出动态内容,但不适合编写java逻辑。

  JSP执行原理: 
  所有JSP页面,在执行的时候都会被服务器端的JSP引擎转换为Servlet(.java文件),
  然后又由JSP引擎调用Java编译器,将Servlet(.java文件)编译为Class文件
  (.class文件),然后由Java虚拟机(JVM)解释执行。

 jsp基础语法
 (1).html 标签
 (2).小脚本 <% java代码 %>
     表达式 <%= 2+3 %>  相当于out.print() 并且可以运算
     声明   <%! %> 表示在类中定义全局成员,和静态块。
     JSP注释
     JSP注释:<%-- 被注释的内容 --%> 特点:安全,省资源
     网页注释:<!-- 网页注释 -->    特点:不安全,浪费资源

JSP三大指令

2.jsp三大指令
  (1)page指令
   <!-- 默认是true 相当一个开关 用来控制session对象 -->
   <%@ page session="true" %>
   <!-- 如果页面中又错误 则跳转到指定的页面 -->
   <%@ page errorPage="/error.jsp" %>
   <!-- 默认是关闭状态的 打开 捕获异常信息的对象的创建 Throwable -->
   <%@ page isErrorPage="true" %>
   <!-- 导入包 -->
   <%@page import="java.lang.*"%>
   JSP会自动导入以下的包:
   import java.lang.*;
   import javax.servlet.*;
   import javax.servlet.http.*;
   import javax.servlet.jsp.*;
  (2)include指令
  <!--include指令 file指 包含哪个页面
    是静态包含: 在翻译成.java文件前 就已经合成了页面 -->
  <%@include file="/4.jsp" %>
  (3)taglib指令
  <!-- taglib指令 导入库 prefix="o" 
   表示给导入的标签库中的标签起一个别名-->
  <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="o"%>

JSP六大动作

3.jsp六大动作
  (1)<jsp:include > 动态包含
  <!-- 静态包含: 在翻译成.java文件前 就已经合成了页面
       动态包含: 代码逐行执行 当执行到动态包含时 才会去编译被包含的页面 
                这样在服务器的work文件夹下会生成两套文件
        原 则 :  能用静的就不用动的
  -->
  <% <jsp:include page="/other.jsp"></jsp:include> %>
  (2)<jsp:forward> 请求转发
  (3)<jsp:param> 设置请求参数
   <jsp:forward page="/other.jsp">
     <jsp:param value="zhangsan" name="username"/>
     <jsp:param value="123456" name="password"/>
   </jsp:forward>
  <!-- 获取转发中的参数 -->
  <!-- 是保存在参数中 不是保存在域中  -->
    <%=request.getParameter("username") %>
    <%=request.getParameter("password") %>
  (4)<jsp:useBean> 创建一个对象
  <jsp:useBean id="user" class="com.test.User"/>
  (5)<jsp:setProperty> 给指定的对象属性赋值
  <jsp:setProperty property="name" name="user" value="dp"/>
  (6)<jsp:getProperty> 取出指定对象的属性值
  <jsp:getProperty property="name" name="user"/>

JSP9个内置对象

4.jsp9个内置对象
 (1)request      请求对象
 (2)response     响应对象
 (3)session      session对象 
 (4)application  context域对象
 (5)exception    异常对象
 (6)page         当前servlet实例 相当于this
 (7)config       获取配置信息的对象
 (8)out          输出对象
 (9)pageContext  域对象 该域对象只在当前页面有效 出了页面获取不到
   /* 一般系统方法中 需要一个int参数 一般会是常量 */
   /* 只要有pageContext 就能向各个域中 添加值 参数三 表示对应域的常量 */
        pageContext.setAttribute("p", "pageContext",
         PageContext.PAGE_SCOPE);
        pageContext.setAttribute("p", "request",
         PageContext.REQUEST_SCOPE);
        pageContext.setAttribute("p", "session",
         PageContext.SESSION_SCOPE);
        pageContext.setAttribute("p", "application", 
        PageContext.APPLICATION_SCOPE);
    <!-- 从小到大找 -->
   <%=pageContext.findAttribute("p") %>
   <!-- 使用el表达式表示为 -->
   ${p }

JSP EL表达式的隐式对象

5.EL表达式:
  EL表达式:expression language 表达式语言
  要简化jsp中java代码开发。
  它不是一种开发语言,是jsp中获取数据的一种规范
  功能:获取数据
  EL表达式能获取存在4个作用域中的数据
  EL获取对于null这样的数据,在页面中表现为空字符串

jsp el表达式的隐式对象:
(1)pageContext
   域对象
(2)pageScope
  在el表达式中代表pageContext域对象
(3)requestScope
  在el表达式中代表request域对象
(4)sessionScope
  在el表达式中代表session域对象
(5)applicationScope
  在el表达式中代表application域对象

<form action="${pageContext.request.contextPath }/9.jsp" method="post">
        用户名:<input type="text" name="username"><br/>
        密码:<input type="text" name="password"><br/>
        <input type="checkbox" name="hobby" value="篮球">篮球
        <input type="checkbox" name="hobby" value="唱歌">唱歌<br/>
        <input type="submit" value="提交">
</form>

(6)param 
   <!-- 用el表达式获取请求中的参数  -->
   <!-- 就相当于在Servlet中调用getparameter()方法 -->
   ${param.username }
(7)paramValues
   ${paramValues.hobby[0] }
(8)header 
   <!-- 获取请求头 -->
   ${header["User-Agent"]}
(9)headerValues
(10)cookie
    <!-- 取cookie中的值 -->
    ${cookie.JSESSIONID }

集合中el表达式的使用
<!-- 如果是list集合的话 只能使用[] -->
    ${list[0] }
    ${map.d }
    ${map['d'] }
<!-- 判断是否为空 只要没有值就返回true-->
  <%
        String str1 = null;
        request.setAttribute("str1", str1);

        String str2 = "";
        request.setAttribute("str2", str2);
  %>
    ${empty str1 }  <!-- true -->
    ${empty str2 }  <!-- true -->

JSTL表达式

6.jstl表达式
    <!-- JSTL表达式 需要导包 taglib-->
    <!-- JSTL表达式 实际上就是处理jsp页面上的逻辑处理 -->
    <!-- 通用 set out remove -->
    <!-- 声明一个变量 默认是放在page域中-->
    <c:set var="num" value="10" scope="session"></c:set>
    <!-- 相当于直接输出到网页上  -->
    <c:out value="${num1} " default="aaaa"></c:out>
    <!-- 删除 -->
    <c:remove var="num" scope="session"/>
    ${num }

    <!-- 声明变量 -->
    <c:set var="n" value="10"></c:set>
    <!-- 逻辑表达式 if choose -->
    <c:if test="${n < 5 }">
        aaaaa
    </c:if>

    <c:if test="${n > 5 }">
        bbbbb
    </c:if>
    <c:choose>
        <c:when test="${n==5 }">5</c:when>
        <c:when test="${n==10 }">10</c:when>
        <c:otherwise>
            xxxxx
        </c:otherwise>
    </c:choose>

   <%
        ArrayList<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        list.add("ccc");
        list.add("ddd");
        request.setAttribute("list", list);
    %>
    <!-- items是你要遍历的容器 var表示容器中保存的对象-->
    <c:forEach items="${list }" var="l"  step="1">
        ${l }
    </c:forEach> <br/>

    <!-- 循环 step循环增量-->
    <c:forEach var="i" begin="0" end="10" step="2">
        ${i }<br/>
    </c:forEach>
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值