JSP基础知识学习

笔者对于JSP也是初学,写这篇文章的主要目的是方便自己去理解JSP的相关内容,所以有些描述并不是那么专业和全面,请多多包涵。

一、JSP概述

JSP(全称JavaServer Pages)是由Sun Microsystems公司主导创建的一种动态网页技术标准。JSP部署于网络服务器上,可以响应客户端发送的请求,并根据请求内容动态地生成HTML、XML或其他格式文档的Web网页,然后返回给请求者。JSP技术以Java语言作为脚本语言,为用户的HTTP请求提供服务,并能与服务器上的其它Java程序共同处理复杂的业务需求。

JSP,中文名称为Java服务器页面,相应的其对应的便是jsp文件。在jsp文件里面可以编写Java代码也可以编写HTML代码,简单的理解就是jsp就是可以写java代码的html,,当然这里面也可以有xml、xhtml等等。通过编写jsp文件,我们可以在HTML网页中动态嵌入元素,调用Java的一些API等等,很灵活。

二、JSP实例学习

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>$Title$</title>
</head>
<body>

<%--下面是一句Java代码--%>
<%
    System.out.println("hello world");
%>

</body>
</html>

上面就是一个非常简单的jsp文件,很容易看出它和html文件非常相似,只是多了配置说明和Java语句。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

上面这一句是jsp文件的配置说明,注意语句格式是==<%@ … %>==

  • page contentType=“text/html;charset=UTF-8”
    表示文档类型,“text/htm”表示是文本html,“charset=UTF-8”表示字符集为UTF-8,编程一般涉及中文都默认用UTF-8。

  • language=“java”
    说明是Java语言的,其实这一句有点多余,默认就是java语言,这一句可以删除。

在jsp文件里面,注释是用==<%–注释–%>==,比html的注释多了个百分号。
在jsp里面写Java代码,也并不是就直接写,也要有限定,主要限定如下:

  • <%!Java代码 %>
    申明变量或方法,这里面申明的变量是全局的

  • <% Java代码 %>
    申明变量或方法,这里面申明的变量是局部的

  • <%= Java表达式 %>
    用于输出表达式到浏览器,这里面的表达式不能跟分号

三、EL表达式学习

EL(Expression Language)表达式,是为了简化jsp中的Java代码的一种语言格式。其一般格式为

${表达式}

jsp默认支持el表达式的,如果要忽略el表达式,则可以

  • 设置jsp中page指令中:isELIgnored=“true” 忽略当前jsp页面中所有的el表达式
  • ${表达式} :忽略当前这个el表达式

(1)EL表达式的运用

el表达式的用处主要体现在

  • 运算
    直接写运算表达式即可。

  • 获取值
    注意el表达式获取值只能通过域对象获取。语法为

${域名称.键名}:从指定域中获取指定键的值
${键名}:表示依次从最小的域中查找是否有该键对应的值,直到找到为止。

相应的所涉及的四大域域名称为:

pageScope		    --> pageContext
requestScope 	    --> request
sessionScope 	    --> session
applicationScope    --> application(ServletContext)

(2)完整代码实例学习

下面是一个关于使用el表达式的完整代码,可参考参考。

<%@ page import="com.study.domain.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Map" %>

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>


<%
    //在存储域中存储数据
    request.setAttribute("name", "xiaoming");
    session.setAttribute("name", "xiaohong");
    session.setAttribute("password", "123");

%>

<%
    User user = new User();
    user.setName("xiaoming");
    user.setAge(10);

    request.setAttribute("user", user);
%>

<%
    List list = new ArrayList();
    list.add("a");
    list.add("b");
    list.add("c");

    request.setAttribute("list", list);

%>

<%
    Map map = new HashMap();
    map.put("name", "xiaogang");
    map.put("gender", "man");

    request.setAttribute("map", map);
%>

<%
    int[] arr = new int[]{1, 2, 3};
    String str = "abc";
    User[] users = new User[0];

    request.setAttribute("arr", arr);
    request.setAttribute("str", str);
    request.setAttribute("users", users);
%>

<%--用el表达式来计算--%>
<h3>计算</h3>
${1+2}<br>
${1<2}<br>

<h3>empty运算符判断是否为空或者长度是否为0</h3>
${empty requestScope.arr}<br>
${empty requestScope.str}<br>
${empty requestScope.users}<br>

<h3>获取值</h3>
${requestScope.name}<br>
${sessionScope.password}<br>
<%--依次从最小的域中查找是否有该键对应的值,直到找到为止。--%>
${name}<br>

<h3>获取对象</h3>
${requestScope.user}<br>
${requestScope.user.name}<br>

<h3>获取list的值</h3>
${requestScope.list}<br>
${requestScope.list[0]}<br>
${requestScope.list[1]}<br>

<h3>获取map的值</h3>
${requestScope.map}<br>
${requestScope.map.name}<br>
${requestScope.map["name"]}<br>
</body>
</html>

四、JSTL学习

JSTL(Java server pages standarded tag library,即JSP标准标签库)是由JCP(Java community Proces)所制定的标准规范,它主要提供给Java Web开发人员一个标准通用的标签库,并由Apache的Jakarta小组来维护。开发人员可以利用这些标签取代JSP页面上的Java代码,从而提高程序的可读性,降低程序的维护难度。

和el表达式一样,jstl也是为了简化jsp里面的java代码的。
注意使用jstl要导入相应的包,包的下载及导入可参考大佬的博客jstl的jar包的下载

(1)JSTL的运用

常用的jstl标签有:

  • if:相当于java代码的if语句
    c:if标签没有else情况,想要else情况,则可以在定义一个c:if标签
  • choose:相当于java代码的switch语句
使用choose标签声明         			相当于switch声明
使用when标签做判断         			相当于case
使用otherwise标签做其他情况的声明    	相当于default
  • foreach:相当于java代码的for语句
 - 完成重复的操作
      * 属性:
                begin:开始值
                end:结束值
                var:临时变量
                step:步长
                varStatus:循环状态对象
                index:容器中元素的索引,从0开始
                count:循环次数,从1开始
 - 遍历容器
     * 属性:
                items:容器对象
                var:容器中元素的临时变量
                varStatus:循环状态对象
                index:容器中元素的索引,从0开始
                count:循环次数,从1开始

(2)JSTL实例学习

下面是完整的jstl代码,可参考。

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%--引入jstl--%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>

<%--if标签--%>
<c:if test="true">
    <h3></h3>
</c:if>

<%--choose标签--%>
<%
    request.setAttribute("number", 1);
%>

<c:choose>
    <c:when test="${number == 1}">星期一</c:when>
    <c:when test="${number == 2}">星期二</c:when>
    <c:when test="${number == 3}">星期三</c:when>
    <c:when test="${number == 4}">星期四</c:when>
    <c:when test="${number == 5}">星期五</c:when>
    <c:when test="${number == 6}">星期六</c:when>
    <c:when test="${number == 7}">星期天</c:when>

    <c:otherwise>数字输入有误</c:otherwise>
</c:choose>


<%--foreach语句--%>

<c:forEach begin="1" end="10" var="i" step="2" varStatus="s">
    ${s.index}<br>
</c:forEach>

<%
    List list1 = new ArrayList();
    list1.add(1);
    list1.add(2);
    list1.add(3);

    request.setAttribute("list1", list1);

%>

<c:forEach items="${requestScope.list1}" var="num" varStatus="s">
    ${s.index}<br>
    ${num}<br>

</c:forEach>

</body>
</html>

在这里插入图片描述
2019.12.22

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值