jsp3

简介: jsp3

7.jsp的常用标签

a) jsp 静态包含

演示:

在web下建include下建main.jsp和footer.jsp

main.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/13
  Time: 下午 03:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    头部信息 <br>
    主体内容 <br>
<%--
     <%@include file=""%> 就是静态包含
        file属性指定你要包含的jsp页面的路径
        地址中第一个斜杠/表示为 http://ip/port/工程路径/  映射到代码的web目录
        静态包含的特点:
            1.静态包含不会翻译被包含的jsp页面
            2.静态包含其实只是把被包含的jsp页面的代码拷贝到包含的位置执行输出
--%>
    <%@include file="/include/footer.jsp"%>
</body>
</html>

footer.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/13
  Time: 下午 03:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    页脚信息 <br>
    改一下
</body>
</html>

b) jsp 动态包含

动态包含的原理:

演示:

main.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/13
  Time: 下午 03:52
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    头部信息 <br>
    主体内容 <br>
<%--
     <%@include file=""%> 就是静态包含
        file属性指定你要包含的jsp页面的路径
        地址中第一个斜杠/表示为 http://ip/port/工程路径/  映射到代码的web目录
        静态包含的特点:
            1.静态包含不会翻译被包含的jsp页面
            2.静态包含其实只是把被包含的jsp页面的代码拷贝到包含的位置执行输出
--%>
<%--    <%@include file="/include/footer.jsp"%>--%>
<%--    <jsp:include page=""></jsp:include>     这是动态包含
        page 属性指定你要包含的jsp页面的路径
        动态包含也可以像静态包含一样,把被包含的内容执行输出到包含位置
        动态包含的特点:
            1.动态包含会把被包含的jsp页面也翻译成java代码
            2.动态包含底层代码使用如下代码去调用被包含的jsp页面执行输出。
                   JspRuntimeLibrary.include(request,response,"/include/footer.jsp",out,false);
            3.动态包含还可以传递参数
--%>
    <jsp:include page="/include/footer.jsp">
        <jsp:param name="username" value="bbj"/>
        <jsp:param name="password" value="root"/>
    </jsp:include>
</body>
</html>

footer.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/13
  Time: 下午 03:53
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    页脚信息
    <br>
    改一下
    改二下
    <br>
    <%=request.getParameter("password")%>
</body>
</html>

c) jsp 标签-转发

示例说明:在scope.jsp中改一改

<%--
    <jsp:forward page=""></jsp:forward> 是请求转发标签,它的功能就是请求转发
            page 属性设置请求转发的路径
--%>
    <jsp:forward page="/scope2.jsp"></jsp:forward>

jsp的练习题

练习一:在jsp页面输出九九乘法表

在web下,新建test下,下新建test1.jsp

test1.jsp

<%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/13
  Time: 下午 04:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style type="text/css">
        table{
            width: 650px;
        }
    </style>
</head>
<body>
<%--    练习一:在jsp页面输出九九乘法表   --%>
    <h1 align="center">九九乘法表</h1>
    <table align="center">
    <%
        for (int i=1;i<=9;i++){%>
        <tr>
            <%for (int j = 1; j <=i; j++) {%>
                <td><%=j+"*"+i+"="+(i*j)%></td>
            <% } %>
        </tr>
        <% } %>
    </table>
</body>
</html>

练习二:jsp输出一个表格,里面有10个学生信息

在src/com下,新建包pojo,新建类Student

Student

package com.pojo;
public class Student {
    private Integer id;
    private String name;
    private Integer age;
    private String phone;
    public Student() {
    }
    public Student(Integer id, String name, Integer age, String phone) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.phone = phone;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public Integer getAge() {
        return age;
    }
    public void setAge(Integer age) {
        this.age = age;
    }
    public String getPhone() {
        return phone;
    }
    public void setPhone(String phone) {
        this.phone = phone;
    }
    @Override
    public String toString() {
        return "Student{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                ", phone='" + phone + '\'' +
                '}';
    }
}

test2.jsp

<%@ page import="java.util.List" %>
<%@ page import="com.pojo.Student" %>
<%@ page import="java.util.ArrayList" %><%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/13
  Time: 下午 04:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style>
        table{
            border: 1px black solid;
            width: 600px;
            border-collapse: collapse;
        }
        td,th{
            border: 1px black solid;
        }
    </style>
</head>
<body>
<%--练习二:jsp输出一个表格,里面有10个学生信息--%>
    <%
        List<Student> studentList=new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            int t=i+1;
            studentList.add(new Student(t,"name"+t,18+t,"phone"+t));
        }
    %>
    <table>
        <tr>
            <td>编号</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>电话</td>
            <td>操作</td>
        </tr>
    </table>
    <table>
    <% for (Student student : studentList) { %>
        <tr>
            <td><%=student.getId()%></td>
            <td><%=student.getName()%></td>
            <td><%=student.getAge()%></td>
            <td><%=student.getPhone()%></td>
            <td>删除/修改</td>
        </tr>
    <% } %>
    </table>
</body>
</html>

请求转发的使用说明


在service下新建SearchStudentServlet,并在web.xml下配置

SearchStudentServlet

package com.servlet;
import com.pojo.Student;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
public class SearchStudentServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求的参数
        //发SQL语句查询学生的信息
        //使用for循环生成查询到的数据做模拟
        List<Student> studentList=new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            int t=i+1;
            studentList.add(new Student(t,"name"+t,18+t,"phone"+t));
        }
        //保存查询到的结果(学生信息)到request域中
        req.setAttribute("stuList",studentList);
        //请求转发到showStudent.jsp页面
        req.getRequestDispatcher("/test/showStudent.jsp").forward(req,resp);
    }
}

把test2改为

showStudent.jsp

<%@ page import="java.util.List" %>
<%@ page import="com.pojo.Student" %>
<%@ page import="java.util.ArrayList" %><%--
  Created by IntelliJ IDEA.
  User: lenovo
  Date: 2021/8/13
  Time: 下午 04:47
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style>
        table{
            border: 1px black solid;
            width: 600px;
            border-collapse: collapse;
        }
        td,th{
            border: 1px black solid;
        }
    </style>
</head>
<body>
<%--练习二:jsp输出一个表格,里面有10个学生信息--%>
    <%
        List<Student> studentList= (List<Student>) request.getAttribute("stuList");
    %>
    <table>
        <tr>
            <td>编号</td>
            <td>姓名</td>
            <td>年龄</td>
            <td>电话</td>
            <td>操作</td>
        </tr>
    </table>
    <table>
    <% for (Student student : studentList) { %>
        <tr>
            <td><%=student.getId()%></td>
            <td><%=student.getName()%></td>
            <td><%=student.getAge()%></td>
            <td><%=student.getPhone()%></td>
            <td>删除/修改</td>
        </tr>
    <% } %>
    </table>
</body>
</html>

注意

访问:http://localhost:8080/08_jsp/searchStudentServlet
不能直接访问showStudent.jsp

9、什么是Listener监听器?

1、Listener监听器它是JaaWeb的三大组件之-。JavaWeb的三大组件分别是:Servlet程序、Filter过滤器、Listener监 听器。

2、Listener它是JavaE的规范,就是接口

3、监听器的作用是,监听某种事物的变化。然后通过回调函数,反馈给客户(程序)去做一些相应的处理。

9.1、 ServletContextlListener监听器

Sectntogtlstener它可以监听Senletcontext对象的创建和销毁。


ServletContext对象在web工程启动的时候创建,在web工程停止的时候销毁。


监听到创建和销毁之后都会分别调用ServletContextListener监听器的方法反馈。


两个方法分别是:

public interface ServletContextListener extends EventListener {
  /**
  * 在ServletContext对象创建之后马上调用,做初始化
  **/
    void contextInitialized(ServletContextEvent var1);
  /**
  * 在ServletContext对象销毁之后调用
  **/
    void contextDestroyed(ServletContextEvent var1);
}

如何使用ServletContextListener 监听器监听ServletContext对象。

使用步骤如下:

1、编写一个类去实现ServletContextListener

2、实现其两个回调方法

3、到web.xml中去配置监听器
演示

在com下新建包listener下,新建MyServletContextListenerImpl

MyServletContextListenerImpl

package com.listener;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
public class MyServletContextListenerImpl implements ServletContextListener {
    @Override
    public void contextInitialized(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContext对象被创建了");
    }
    @Override
    public void contextDestroyed(ServletContextEvent servletContextEvent) {
        System.out.println("ServletContext对象被销毁了");
    }
}

web.xml中配置

<!--    配置监听器-->
    <listener>
        <listener-class>com.listener.MyServletContextListenerImpl</listener-class>
    </listener>

重新部署,再停止,输出结果




相关文章
|
11月前
|
存储 Java Apache
Jsp相关介绍
Jsp相关介绍
78 0
|
11月前
|
Java 数据库
Jsp应用
Jsp应用
52 0
|
Java 容器
15JavaWeb基础 - JSP介绍
15JavaWeb基础 - JSP介绍
48 0
|
存储 缓存 Java
jsp2
jsp2
44 0
|
前端开发 Java 应用服务中间件
深入理解JSP(一)
深入理解JSP(一)
117 0
|
Java
jsp处理
jsp处理
110 0
|
Java 数据库连接 API
使用jsp
使用jsp
123 0
|
Java
JSP 处理
JSP 处理
91 0
|
安全 Java 应用服务中间件
jsp
jsp
184 0
jsp
|
XML 开发框架 Java
jsp初识-2
jsp初识-2
110 0