javaweb-jsp脚本总结笔记

发布时间 2023-10-17 14:00:12作者: 对象的名字真难取

1什么是JSP

jsp又叫 Java servelt Page 这门技术最大的特点就是,写jsp就像是再写html 但是不仅可以写静态页面,而且可以内置Java代码写出动态页面,也就是说可以为用户提供动态数据。

总的来说jsp = java+ HTML

2.JSP快速入门

2.1提供对应的驱动包

2.1创建对应jsp文件

2.2写对应代码即可(html和java代码)

注:在jsp中写java代码需要对应的标签(详解在jsp脚本)

3.JSP原理

3.1

jsp本质上就是一个servlet ,所以jsp中在向网页发出的请求服务器会先把jsp文件转成servlet文件去执行,所以我们访问jsp实际是在访问jsp背后的servlet文件

servlet文件的位置如图所示

点开其中的java后缀文件其中部分代码如图所示

 可以去查看tomcat源码会发现红色框中的类继承与HttpSevrlet

4.jsp脚本

jsp脚本分类

1.<%...%>内容会直接放到_jspService()方法中

2.<%=...%>内容会放到out.print()中,作为out.print()的参数

3.<%!...%>内容会放到_jspService()方法之外,被类直接包含

(小技巧: 当你想循环或者需要进行其他操作必须用到Java和html进行混合打印的时候可以用拼接的方法,例子如下:)

 

<% for (int i = 0; i < brands.size(); i++) {
        Brand brand = brands.get(i);
    %>
    <tr align="center">
        <td><%= brand.getId() %>
        </td>
        <td><%= brand.getBrandName() %>
        </td>
        <td><%= brand.getCompanyName() %>
        </td>
        <td><%= brand.getOrdered() %>
        </td>
        <td><%= brand.getDescription() %>
        </td>
        <%
            if (brand.getStatus() == 1) {
        %>
        <td><%= "启用" %></td>
        <%
        } else {
        %>
        <td><%= "禁用" %></td>
        <%
            }

        %>
        </td>
        <td><a href="#">修改</a> <a href="#">删除</a></td>
    </tr>
    <%
        }
    %>

 

图中案例是我想循环打印表格和表格中的数据所作出的拼接

 5.JSP缺点

学习的目的:1.一些比较老的公司仍在使用jsp

      2.可以更好的掌握新的技术

 6.引出技术EL表达式

为了解决上述的部分问题

介绍:Expression Language 表达语言 用于简化JSP页面内的java代码

主要功能:获取数据

语法${expression}例:

 : 获取域中存储key为brands的数据

 JavaWeb中的四大域对象:

1.page:当前页面有效

2.request:当前请求有效

3.session: 当前会话有效

4.application:当前应用有效

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

7.引出JSTL技术

简介:使用标签取代JSP上面的java代码

需要引用对应的包

<dependency>
            <groupId>jstl</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

        <dependency>
            <groupId>taglibs</groupId>
            <artifactId>standard</artifactId>
            <version>1.1.2</version>
        </dependency>

 介绍两个常用标签

1.<c:if test = "xxx">...</c:if>

参数介绍:xxx 代表传入的判断条件...代表判断后的要运行的语句

概述:类似于java代码中的if判断语句

<c:if test="${status==1}">
    启用
</c:if>
<c:if test="${status==0}">
    禁用
</c:if>

2.<c:forEach>

 

参数介绍:item:被遍历的容器

     var:代表临时变量

     varStatus:遍历状态对象

概述:相当于for循环

注:${brand.id}并不是访问成员变量中的id在调用brand.id 的时候他会自动解析去寻找该类中的getId方法,其他访问方法都与之类似。