jsp

Posted π+1

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp相关的知识,希望对你有一定的参考价值。

一、jsp概述

(1)jsp全称是java Server Pages,是一种用于开发动态web的技术。
(2)jsp实际上是一种servlet技术。
(3)jsp=html+java
(4)html/servlet/jsp三者的区别:
1)html:静态内容
2)servlet:适合编写java逻辑代码,不适合编写网页内容
3)jsp:适合编写输出静态内容

二、jsp原理

服务器端: 翻译(生成xxx_jsp.java文件) -> 编译(生成xxx_jsp.class文件) -> 执行
html代码,服务器不及诶,直接写回客户端
Java代码直接解析,把结果写回到客户端

三、jsp的最佳实践

Servlet:控制器。重点编写java代码
作用:(1)获取表单数据;
(2)处理业务逻辑
(3)分发转向
jsp:代码显示模板,重点在于显示数据

四、jsp的基本语法

(1)JSP模版元素
网页的静态内容。如:html标签和文本。
(2)JSP的脚本
小脚本 <% java代码 %>
表达式 <%= a+b %> 等价于out.print(a+b);
声明 <%! %> 表示在类中定义全局成员,和静态块。
(3)JSP注释
JSP注释:<%-- 被注释的内容 --%> 特点:安全,省流量
网页注释:<!-- 网页注释 --> 特点:不安全(在网页源码中会显示注释的内容),费流量

五、3个指令

(1)语法:
<%@ 指令名称 属性1=“属性值1” 属性2=“属性值2”。。。%>
或者:
<%@ 指令名称 属性1=“属性值1”%>
<%@ 指令名称 属性2=“属性值2”%>

(1)page:都有默认值。
其中:pageEncoding是告诉服务器使用什么编码进行翻译
contextType告诉浏览器使用什么编码解析
(2)include:
静态包含:把其它资源包含到当前页面中。
<%@ include file="/xxx.jsp %>
动态包含:
<jsp:include page="/xxx.jsp"></jsp:include>
两者的区别:翻译的时间段不同
前者:在翻译时就把两个文件合并
后者:不会合并文件,当代码执行到include时,才包含另一个文件的内容。
注:能用静的就不用动的。
   (3)taglib:
      作用:在JSP页面中导入JSTL标签库,替换jsp中的java代码片段。

六、jsp的6个动作

<jsp:include > 动态包含
<jsp:forward> 请求转发
<jsp:param> 设置请求参数
<jsp:useBean> 创建一个对象
<jsp:setProperty> 给指定的对象属性赋值
<jsp:getProperty> 取出指定对象的属性值

七、jsp的9个内置对象

request:域对象
response
session:域对象
application:域对象
exception
page:java.lang.Object:当前对象this
config
out
pageContext:域对象
可以操作其他对象方法
findAttribute(String name); 自动从page request session application依次查找,找到了就取值,结束查找

八、EL表达式

(1) EL表达式:expression language 表达式语言用来简化jsp中java代码开发。EL不是一种开发语言,是jsp中获取数据的一种规范.
(2)EL表达式只能获取存在4个作用域中的数据
${u} <===> pageContext.findAttribute("u");
${u.name} <==>u.getName()方法
.运算符相当于调了getter方法,(.属性名)。
(3)EL获取对于null这样的数据,在页面中表现为空字符串"";
(4)empty

也可以使用三元运算符
      
    <%  

     <%--判断null,是的话返回true(空字符串和没有元素的集合都是null)--%> String str1 = null; request.setAttribute("str1", str1); String str2 = ""; request.setAttribute("str2",str2); String str3 = "abc"; request.setAttribute("str3", str3); List list1 = new ArrayList(); request.setAttribute("list1", list1); List list2 = new ArrayList(); list2.add("asdf"); request.setAttribute("list2", list2); int sex = 0; request.setAttribute("sex", sex); %> ${ empty str1 } //true ${ empty str2 } //true ${ empty str3 } // false ${ empty list1 } // true ${ empty list2 } // false <%--三元运算符--%> <input type="radio" name="sex" value="male" ${sex==0 ? "checked=‘checked‘":"" }/><br/> <input type="radio" name="sex" value="female" ${sex==1 ? "checked=‘checked‘":"" }/><br/>

 



九、JSTL

(1)JSTL(JavaServerPages Standard Tag Library)JSP标准标签库,使用JSTL实现JSP页面中逻辑处理。如判断、循环等。
(2)使用JSTL需在页面中添加taglib指令:
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
  
    <%--通用标签: set、 out、 remove--%>
    <c:set var="num1" value="${2+3}" scope="page"></c:set>
    <c:out value="${num1}"></c:out>
    <c:remove var="num1"></c:remove>

    <%--条件标签:if --%>
    <c:set var="num2" value="3"></c:set>
    <c:if test="${7>num2}"></c:if>

    <%--条件标签:choose --%>--
    <c:set var="num3" value="3"></c:set>
    <c:choose>
        <c:when test="${num3==1}">1111</c:when>
        <c:when test="${num3==2}">2222</c:when>
        <c:when test="${num3==3}">3333</c:when>
        <c:otherwise>others</c:otherwise>
    </c:choose>
<%
        <%--迭代标签:foreach--%>
        List list = new ArrayList();
        list.add("tom");
        list.add("bob");
        list.add("jerry");
        list.add("marry");
        list.add("sundy");
        pageContext.setAttribute("list", list);<%--只有在本页使用pageContext有效--%>
    %>
    <table border="1">
        <tr>
            <th>姓名</th>
            <th>索引</th>
            <th>计数</th>
            <th>第一个</th>
            <th>最后一个</th>
        </tr>
        <c:forEach items="${list}" var="list" varStatus="vs">
            <tr>
                <td>${list}</td>
                <td>${vs.index}</td> <%--索引--%>
                <td>${vs.count}</td> <%--计数--%>
                <td>${vs.first}</td> <%--第一个(Boolean)--%>
                <td>${vs.last}</td>  <%--最后一个(Boolean)--%>
            </tr>
        </c:forEach>

    </table>

 

    

















































以上是关于jsp的主要内容,如果未能解决你的问题,请参考以下文章

JSP基础

day06-jsp

jsp

JSP语法

JSP 语法

JSP 基础语法