JSP指令、标签、在JSP中使用Java实体类、过滤器

一、JSP指令

JSP指令用来设置整个JSP页面相关的属性,如网页的编码方式和脚本语言。JSP指令有三个:

指令描述
<%@ page … %>定义网页依赖属性,比如脚本语言、error页面、缓存需求等等
<%@ include … %>包含其他文件
<%@ taglib … %>引入标签库的定义
  • page

    autoFlush:自动刷新 (true,false:默认)
    contentType:页面文本类型 “text/html”
    errorPage: 如果存在错误页面,就跳转至指定的页面 【不推荐使用,推荐在XML中配置】
    language:JSP中使用的语言,默认是java
    pageEncoding:页面编码
    import:因为jsp本质上就是一个servlet,所以需要导入相关jar包才能使用

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

    JSP可以通过include指令来包含其他文件。被包含的文件可以是JSP文件、HTML文件或文本文件。包含的文件就好像是该JSP文件的一部分,会被同时编译执行

    file属性:【要导入页面,一般都是不完整的网页,只包含部分】

    <%@ include file="文件相对 url 地址" %>
    

    案例:实现在一个JSP中引入其他JSP文件

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>header</title>
    </head>
    <body>
    <h1>我是header</h1>
    </body>
    </html>
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>footer</title>
    </head>
    <body>
    <h1>我是footer</h1>
    </body>
    </html>
    
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>test3</title>
    </head>
    <body>
    <%@include file="header.jsp"%>
    <h1>我是test3</h1>
    <%@include file="footer.jsp"%>
    </body>
    </html>
    
    

    运行结果:

  • taglib

    JSP API允许用户自定义标签,一个自定义标签库就是自定义标签的集合。

    Taglib指令引入一个自定义标签集合的定义,包括库路径、自定义标签。

    <%@ taglib uri="uri" prefix="prefixOfTag" %>
    

二、JSP标签

  • 语法:<jsp:XXX >

  • jsp:include page="要包含的页面"

    jsp:include 和 @include 区别:

    jsp:include 动态包含 :他不会把包含进来的页面和自己的页面融合成为一个servlet (推荐使用)

    @include 静态包含 : 他会把包含进来的页面和自己的页面融合成为一个servlet

    <jsp:include page="common/header.jsp"/>
    <h1>我是tag页面</h1>
    <jsp:include page="common/footer.jsp"/>
    
  • jsp:forward page="要转发的页面"

    URL不变,本质就是request的请求转发,可以携带参数;可以通过request取出来这个携带的参数,一般配合<jsp:param>使用

  • jsp:param 一般配合<jsp:forward>使用,携带参数

    <jsp:forward page="index.jsp">
        <jsp:param name="username" value="kuangshen"/>
        <jsp:param name="age" value="18"/>
    </jsp:forward>
    

三、在jsp中使用Java实体类

实体类:pojo,entity,beans…

应包含:属性私有,get/set ,有参,无参构造, toString();除此之外还可以在set赋值方法内加入条件限制判断

实体类:

package org.westos.jsp;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

在jsp页面使用实体类方式一——jsp标签操作

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>test4</title>
</head>
<body>
<%--
    id:实例化对象的名称,对象名
    class:要实例化的类
    scope:对象的作用域,默认是page,千万不要放在application中;
--%>
<jsp:useBean id="student" class="org.westos.jsp.Student" scope="page"/>

<%--jsp标签--%>
<%--设置值--%>
<jsp:setProperty name="student" property="name" value="小学生"/>
<jsp:setProperty name="student" property="age" value="18"/>

<%--获取值--%>
<jsp:getProperty name="student" property="name"/>
<jsp:getProperty name="student" property="age"/>
</body>
</html>

在jsp页面使用实体类方式二——jsp基本语法实现

<%@ page import="org.westos.jsp.Student" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>test5</title>
</head>
<body>
<%
    Student student = new Student("小学生",18);
%>

<%--获取值--%>
<%=student.getName()%>
<%=student.getAge()%>
</body>
</html>

四、EL表达式

${page、session、request、Application的变量}

五、过滤器(Filter)

JSP 和 Servlet 中的过滤器都是 Java 类。过滤器可以动态地拦截请求和响应,以变换或使用包含在请求或响应中的信息。可以将一个或多个过滤器附加到一个 Servlet 或一组 Servlet。过滤器也可以附加到 JavaServer Pages (JSP) 文件和 HTML 页面。

过滤器是可用于 Servlet 编程的 Java 类,可以实现以下目的:

  • 在客户端的请求访问后端资源之前,拦截这些请求。
  • 在服务器的响应发送回客户端之前,处理这些响应。

过滤器主要用来实现过滤乱码和一些违规词语

序号方法 & 描述
1public void doFilter (ServletRequest, ServletResponse, FilterChain) 该方法完成实际的过滤操作,当客户端请求方法与过滤器设置匹配的URL时,Servlet 容器将先调用过滤器的 doFilter 方法。FilterChain 用于访问后续过滤器。
2public void init(FilterConfig filterConfig) web 应用程序启动时,web 服务器将创建Filter 的实例对象,并调用其init方法,读取web.xml配置,完成对象的初始化功能,从而为后续的用户请求作好拦截的准备工作(filter对象只会创建一次,init方法也只会执行一次)。开发人员通过init方法的参数,可获得代表当前filter配置信息的FilterConfig对象。
3public void destroy() Servlet容器在销毁过滤器实例前调用该方法,在该方法中释放Servlet过滤器占用的资源。
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值