JavaWeb学习(四)--JSP

Java Server Pages(JSP)是一种动态网页开发技术,它允许在HTML中嵌入Java代码。本文详细介绍了JSP的执行过程,包括从浏览器请求到Web服务器响应的步骤,并提供了JSP实例,如第一个JSP代码示例。此外,还讲解了JSP的三种指令标签(@page、@include、@taglib)和两种行为标签(jsp:include、jsp:useBean、jsp:forward)的使用,帮助读者掌握JSP的基本概念和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JSP

简介

JSP全称Java Server Pages,中文名为Java服务器页面,是一种动态网页开发技术。它是在HTML中插入Java程序段(<%java程序段%>)和JSP标记,从而形成JSP文件,后缀名为(*.jsp)。它实质上是一个简化的Servlet。

JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

Jsp的执行

  • 通过浏览器发送一个对Jsp网页的http请求给Web服务器
  • Web服务器处理该请求
    • Jsp引擎载入jsp文件
    • 将jsp文件转换为一个servlet
    • 将该servlet编译成可执行类
    • Servlet引擎载入并执行该类
    • 将该类的输出传给Web服务器
  • Web服务器将Http response返回到客户端浏览器

Jsp实例

第一个jsp代码

在网页上输出100句"Hello,man.Come on!!!"

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>jsp</title>
    <style>
        h1
        {
            color:peachpuff;
            text-align:center;
        }
    </style>
</head>
<body>

<%
    for (int i = 0; i <100 ; i++) {
 %>

<h1>Hello,man.Come on!!!</h1>

<%
    }
%>

</body>
</html>

运行结果:

在这里插入图片描述

Jsp的三种指令标签:
  • <%@ page … %>为容器提供当前页面的使用说明。常用属性:

    • contentType:页面文本类型 “text/html”
    • errorPage:jsp页面出现错误时,就跳转至指定的页面
    • import:导入要使用的Java类
    • language:定义JSP页面所用的脚本语言,默认是Java
    • autoFlush:自动刷新 (true,false:默认)
  • <%@ include … %>导入其他页面包含到本页

  • <%@ taglib … %>引入标签库的定义

    例:

    执行结果:

    在这里插入图片描述
    出现500异常时:

    在这里插入图片描述

    出现404异常时:

    在这里插入图片描述

    具体代码如下:

    index.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
        <style>
          h1{
            color: darksalmon;
            text-align: center;
          }
        </style>
      </head>
      <body>
    
      <%@include file="common/header.jsp"%>
      <h1>我是该网页的中心内容</h1>
      <%
        int [] num = {1,2,3};
        for (int i = 0; i < 3; i++) {
      %>
      <h1>
        num=<%=num[i]%>
      </h1>
      <%
        }
      %>
      <%@include file="common/footer.jsp"%>
      
      </body>
    </html>
    
    

    header.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <style>
        h3{
            color: cornflowerblue;
        }
    </style>
    <div>
    
        <h3>首++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++</h3>
    
    </div>
    

    footer.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <style>
        h3{
            color: cornflowerblue;
        }
    </style>
    <div>
    
        <h3>=============================================================================================================================尾</h3>
    
    </div>
    
    

    404.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>404</title>
        <style>
            h1{
                color: crimson;
            }
        </style>
    </head>
    <body>
    
    <h1>见到我404可不是什么好消息</h1><br>
    <h1>你的路径估计出错了哦...</h1>
    
    </body>
    </html>
    
    

    500.jsp

    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
        <style>
            h1{
                color: crimson;
            }
        </style>
    </head>
    <body>
    
    <h1>见到我500可不是什么好玩的</h1><br>
    <h1>你的代码可能出错了哦...</h1><br>
    <h1>愣着干嘛!还不快去改代码!!!</h1><br>
    
    </body>
    </html>
    
    

    web.xml

    <error-page>
            <error-code>404</error-code>
            <location>/error/404.jsp</location>
        </error-page>
        <error-page>
            <error-code>500</error-code>
            <location>/error/500.jsp</location>
        </error-page>
    
JSP行为标签
  • jsp:include:用于在当前页面中包含静态或动态资源

    jsp:include 和 @include 区别
    @include 静态包含 : 他会把包含进来的页面和自己的页面融合成为一个servlet
    jsp:include 动态包含 :他不会把包含进来的页面和自己的页面融合成为一个servlet 【推荐使用,容错率更高】

  • jsp:useBean:

    • id:实例化对象的名称,对象名

    • class:要实例化的类

    • scope:对象的作用域,默认是page,千万不要放在application中;

      <jsp:useBean id=“Student” class=“priv.sehun.jsp.Student” scope=“page”/>

  • jsp:forward:从一个JSP文件向另一个文件传递一个包含用户请求的request对象

  • 例:

    Student实体类

    package priv.sehun.pojo;
    
    public class Student {
    
        //封装:属性私有,不让用户瞎操作,因而我们设置操作属性的公开方法,然后我们在公开的方法中设置安全性代码
        private String namr;
        private int age;
        private int id;
        private boolean isGraduate;
    
        public Student() {
        }
    
        public Student(String namr, int age, int id, boolean isGraduate) {
            this.namr = namr;
            this.age = age;
            this.id = id;
            this.isGraduate = isGraduate;
        }
    
        public String getNamr() {
            return namr;
        }
    
        public void setNamr(String namr) {
            this.namr = namr;
        }
    
        public int getAge() {
            if(age<=0||age>150){
                age = 0;
                return age;
            }
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
    
        public int getId() {
            return id;
        }
    
        public void setId(int id) {
            this.id = id;
        }
    
        public boolean isGraduate() {
            return isGraduate;
        }
    
        public void setGraduate(boolean graduate) {
            isGraduate = graduate;
        }
    }
    
    

    pojo.jsp

    <%@ page import="priv.sehun.pojo.Student" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    
    <%--普通方法new Student
    <%
        Student student = new Student();
    %>
    --%>
    
    <%--jsp-usebean标签new Student--%>
    <jsp:useBean id="student" class="priv.sehun.pojo.Student" scope="page"/>
    
    <%--普通方法赋值--%>
    <%
        student.setAge(999);
        student.setId(700);
        student.setGraduate(false);
    %>
    <%--jsp标签赋值--%>
    <jsp:setProperty name="student" property="namr" value="ss"/>
    
    <hr>
    <%--EL表达式取值--%>
    age:${student.age}<br>
    name:${student.namr}<br>
    
    <%--普通方法取值--%>
    id:<%=student.getId()%><br>
    
    <%--JSP标签取值--%>
    isGraduate:<jsp:getProperty name="student" property="graduate"/>
    
    
    </body>
    </html>
    
    

    运行结果:

    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值