jsp简介

目录

1、jsp概念

2、jsp快速入门

1、新建web项目,在pom.xml中添加jsp依赖

2、添加jsp文件在webapp目录下 

3、在创建好的jsp文件添加HTML标签和Java代码 

4、启动tomcat访问 

3、jsp脚本

4、jsp缺点

5、EL表达式

6、JSTL标签

1、jsp概念


什么是jsp

​ JSP(全称:Java Server Pages):Java 服务端页面。是一种动态的网页技术,其中既可以定义 HTML、JS、CSS等静态内 容,还可以定义 Java代码的动态内容,也就是 JSP = HTML + Java

​ JSP 作用:简化开发,避免了在Servlet中直接输出HTML标签

2、jsp快速入门

流程说明

  1. 添加jsp坐标
  2. 添加jsp文件在webapp目录下
  3. 添加HTML标签和Java代码

样例演示

1、新建web项目,在pom.xml中添加jsp依赖

<dependencies>
    <dependency>
        <groupId>javax.servlet.jsp</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.2</version>
        <scope>provided</scope>
    </dependency>
</dependencies>
 

2、添加jsp文件在webapp目录下 

3、在创建好的jsp文件添加HTML标签和Java代码 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jsp快速入门</title>
</head>
<body>
    <h1>Hello jsp</h1>

    <%-- 编写java代码   --%>
    <%
        out.print("java 代码");
    %>
</body>
</html>

4、启动tomcat访问 

3、jsp脚本

jsp脚本分类

  1. <%…%>:内容会直接放到_jspService()方法之中
  2. <%=…%>:内容会放到out.print()中,作为out.print()的参数
  3. <%!…%>:内容会放到_jspService()方法之外,被类直接包含

代码演示

<%@ page import="java.util.ArrayList" %>
<%@ page import="java.awt.*" %>
<%@ page import="java.util.List" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSP的三种脚本</title>
</head>
<body>
    <%--使用Java代码定义int变量i,和ArrayList集合list--%>
    <%
        int i = 20;
        List<String> list = new ArrayList<>();
        list.add("张三");
        list.add("李四");
        // 调用下面定义的方法
        show();
    %>

    <%--输出字符串,变量i,集合list--%>
     <%="hello"%>
     <%=i%>
     <%=list%>

    <%--定义方法和成员变量--%>
    <%!
        public String name = "王五";
        public void show(){
            System.out.println(name);
        }
    %>
</body>
</html>

4、jsp缺点


由于 jsp页面内,既可以定义 HTML 标签,又可以定义 Java代码,造成了以下问题:

书写麻烦:特别是复杂的页面,阅读麻烦
复杂度高:运行需要依赖于各种环境,JRE,JSP容器,JavaEE…
占内存和磁盘:JSP会自动生成.java和.class文件占磁盘,运行的是.class文件占内存
调试困难:出错后,需要找到自动生成的.java文件进行调试
不利于团队协作:前端人员不会 Java,后端人员不精 HTML


由于上述的问题, JSP 已逐渐退出历史舞台,以后开发更多的是使用 HTML + Ajax 来替代。Ajax 是我们后续会重点学习的 技术。有个这个技术后,前端工程师负责前端页面开发,而后端工程师只负责前端代码开发。

5、EL表达式

​ EL(全称Expression Language )表达式语言,用于简化 JSP 页面内的 Java 代码。 EL 表达式的主要作用是 获取数据。其实就是从域对象中获取数据,然后将数据展示在页面上。

语法:${expression} : 获取域中存储的key为expression的值

JavaWeb中四大域对象:

1.page:当前页有效
2.request:当前请求有效
3.session:当前会话有效
4.application:当前应用有效


el表达式获取数据,会从这4个域中寻找,直到找到为止

代码演示

前端代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL</title>
</head>
<body>
    <%--取出request存储的数据--%>
    用户名: ${username} <br/>
    品牌: ${brands}<br/>
    年龄: ${age} <br/>
</body>
</html> 

后端代码: 

public class ServletDemo01 extends HttpServlet {
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1.准备数据
        List<Brand> brands = new ArrayList<Brand>();
        brands.add(new Brand(2,"优衣库","优衣库",200,"优衣库,服适人生",0));
        brands.add(new Brand(3,"小米","小米科技有限公司",1000,"为发烧而生",1));
        brands.add(new Brand(5,"华为","华为科技有限公司",1000,"为发烧而生",1));
        brands.add(new Brand(6,"三只松鼠","三只松鼠",100,"三只松鼠,好吃不上火",1));

        // 2.存储数据到request域中
        request.setAttribute("brands", brands);
        request.setAttribute("username", "zhangsan");
        request.setAttribute("age", 16);

        // 3.转发到jsp
        request.getRequestDispatcher("/04el.jsp").forward(request, response);
    }
}
 

6、JSTL标签

JSP标准标签库(Jsp Standarded Tag Library) ,使用标签取代JSP页面上的Java代码

使用流程:

1. 导入依赖
2. 在jsp页面上引入JSTL标签库
3. 使用

<c: if> 标签:相当于if判断

使用流程:

1、导入依赖

<dependency>
    <groupId>jstl</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
</dependency>
 

 2、在jsp页面上引入JSTL标签库(可以省略,自动会导入)

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
 

3、使用 

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSTL的if标签</title>
</head>
<body>
    <%-- c:if:来完成逻辑判断,替代java中的if --%>
    <c:if test="true">
        true
    </c:if>
    <c:if test="false">
        false
    </c:if>


    <c:if test="${age>18}" >
        成年
    </c:if>

    <c:if test="${age<18}" >
        未成年
    </c:if>
</body>
</html>

<c: forEach>标签:相当于for循环

  • items:被遍历的容器
  • var:遍历产生的临时变量

代码实现:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JSTL的foreach标签</title>
</head>
<body>

<input type="button" value="新增"><br>
<hr>

<table border="1" cellspacing="0" width="70%">
    <tr>
        <th>序号</th>
        <th>品牌名称</th>
        <th>企业名称</th>
        <th>排序</th>
        <th>品牌介绍</th>
        <th>状态</th>
        <th>操作</th>
    </tr>
    <c:forEach items="${brands}" var="brand">
        <tr align="center">
            <td>${brand.id}</td>
            <td>${brand.brandName}</td>
            <td>${brand.companyName}</td>
            <td>${brand.ordered}</td>
            <td>${brand.description}</td>
            <c:if test="${brand.status == 0}">
                <td>禁用</td>
            </c:if>

            <c:if test="${brand.status == 1}">
                <td>启用</td>
            </c:if>
            <td><a href="#">修改</a> <a href="#">删除</a></td>
        </tr>
    </c:forEach>

</table>
<hr/>
</body>
</html>

  • 14
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值