Java Web——JSP的概念理解与应用举例

简介: Java Web——JSP的概念理解与应用举例

文章目录:


1.JSP介绍

2.JSP的优势

3.JSP文件中Java命令书写规范

3.1 执行标签 

3.2 输出标签 

4.JSP中的九大内置对象、四大作用域

4.1 九大内置对象 

4.2 四大作用域 

5.ServletJSP文件之间的关系 

6.JSP运行原理 

7.应用举例 

7.1 第一组实例——JSP

7.2 第二组实例——Servlet+JSP

1.JSP介绍


JSP PHPASPASP.NET 等语言类似,运行在服务端的语言。


JSP(全称Java Server Pages)是由 Sun Microsystems 公司倡导和许多公司参与共同创建的一种使软件开发者可以响应客户端请求,而动态生成 HTMLXML 或其他格式文档的Web网页的技术标准。


JSP技术是以 Java 语言作为脚本语言的,JSP 网页为整个服务器端的 Java 库单元提供了一个接口来服务于HTTP的应用程序。


JSP文件后缀名为 *.jsp


JSP开发的WEB应用可以跨平台使用,既可以运行在 Linux 上也能运行在 Windows 上。


JSPsun公司提供一个规范。JSP规范用于封装响应对象简化将Servlet处理结果写入到响应体。


JSP全称Java Server Pages,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。


JSP是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XHTML代码、XML元素以及嵌入JSP操作和命令来编写JSP


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


JSP标签有多种功能,比如访问数据库、记录用户选择信息、访问JavaBeans组件等,还可以在不同的网页中传递控制信息和共享信息。

2.JSP的优势


以下列出了使用JSP带来的其他好处:


·       ASP相比:JSP有两大优势。首先,动态部分用Java编写,而不是VB或其他MS专用语言,所以更加强大与易用。第二点就是JSP易于移植到非MS平台上。

·       与纯 Servlet 相比:JSP可以很方便的编写或者修改HTML网页而不用去面对大量的println语句。

·       SSI相比:SSI无法使用表单数据、无法进行数据库链接。

·       JavaScript相比:虽然JavaScript可以在客户端动态生成HTML,但是很难与服务器交互,因此不能提供复杂的服务,比如访问数据库和图像处理等等。

·       与静态HTML相比:静态HTML不包含动态信息。

·       jsp文件"运行时"自动将文件内部所有与Java命令无关()的内容自动写入到响应体。

3.JSP文件中Java命令书写规范


3.1 执行标签 

1)格式:   <%
                     Java
命令行;
               %>
2)
作用:用于提示JSP文件在运行时不要将执行标签中Java命令写入到响应体,通知JSP文件在运行时需要将执行标签中内容执行完毕后再做输出。
3) java
命令行: 声明变量、声明运算表达式[数学,关系运算,逻辑运算]、声明控制语句和循环语句。


3.2 输出标签 

1)格式: <%=变量名%>
            <%=
运算表达式%>
2)
作用:在jsp文件运行时,通知JSP将指定变量内容或则表达式结果写入到响应体。 

4.JSP中的九大内置对象、四大作用域


4.1 九大内置对象 

pageContext:页面上下文对象,该对象封存了另外八个对象,每一个JSP文件单独拥有一个pageContext对象

request:封存当前请求数据的对象,由服务器创建

session:此对象用来存储用户的不同请求的共享数据

application:也就是ServletContext对象,以服务项目只有一个,存储用户共享数据的对象

response:响应对象,用来响应请求处理结果给浏览器的对象,设置响应头重定向

out:响应对象,带有缓冲区的响应对象,效率高于response,不能设置响应头重定向,所以response需要保留

page:代表当前JSP对象,相当于Java中的this

exception:异常对象,存储了当前运行的异常信息

config:也就是ServletConfig对象,主要用来获取web.xml中的配置数据,完成一些初始化数据的读取


4.2 四大作用域 

page:其作用域只在一个页面保留

response:其作用域只在一个请求中保留数据

session:其作用域在一次会话中保留数据,仅供一个用户使用

application:其作用域在服务器中保留数据,全部用户共享

5.Servlet与JSP文件之间的关系


1.Servlet: 接收请求并处理请求,但是Servlet不负责将处理结果返回——相当于"大厨"

2.JSP: 不负责处理请求,负责将Servlet生成的处理结果写入到响应体——相当于"传菜员"

3.Servletjsp之间调用关系
                                                       
请求转发
 
浏览器 ------> Servlet(处理请求)-----------> jsp -----> 处理结果写入到响应体

4.Servletjsp之间如何共享数据——借助于request

6.JSP运行原理


1.JSP文件不是静态资源文件也不是动态资源文件

2.JSP文件不能被编译不能被调用执行

运行原理: 1) tomcat接收到调用jsp文件(one.jsp)请求时,tomcat将被访问  jsp【编辑】为 java 文件(one_jsp.java)。

                2) tomcat调用JVM java 文件【编译】为 class 文件(one_jsp.class)

                3) 这个 class 文件是一个Servlet接口实现类。

                4) tomcat通过反射机制生成这个 class 文件的实例对象。

                5) tomcat通过实例对象调用 _jspService 方法,这个方法在运行时,负责通过输出流将 jsp 文件内容写入到响应体

7.应用举例


7.1 第一组实例——JSP


7.2 第二组实例——Servlet+JSP

package com.songzihao.controller;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.IOException;
public class OneServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String str="Hello JSP!!!";
        request.setAttribute("info",str);
        request.getRequestDispatcher("/one.jsp").forward(request,response);
    }
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    }
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <servlet>
        <servlet-name>OneServlet</servlet-name>
        <servlet-class>com.songzihao.controller.OneServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>OneServlet</servlet-name>
        <url-pattern>/one</url-pattern>
    </servlet-mapping>
</web-app>
<%@ page contentType="text/html;charset=utf-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        String value= (String) request.getAttribute("info");
    %>
    运行结果: <%=value%>
</body>
</html>

相关文章
|
3天前
|
安全 Java 调度
Java线程:深入理解与实战应用
Java线程:深入理解与实战应用
20 0
|
1天前
|
存储 中间件 Go
探索Gin框架:快速构建高性能的Golang Web应用
探索Gin框架:快速构建高性能的Golang Web应用
|
1天前
|
安全 Java 大数据
探索Java的奇妙世界:语言特性与实际应用
探索Java的奇妙世界:语言特性与实际应用
|
2天前
|
Dubbo Java 应用服务中间件
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
Java从入门到精通:3.2.2分布式与并发编程——了解分布式系统的基本概念,学习使用Dubbo、Spring Cloud等分布式框架
|
2天前
|
设计模式 存储 前端开发
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
Java从入门到精通:2.2.1学习Java Web开发,了解Servlet和JSP技术,掌握MVC设计模式
|
3天前
|
Java
Java中的并发编程:理解和应用线程池
【4月更文挑战第23天】在现代的Java应用程序中,性能和资源的有效利用已经成为了一个重要的考量因素。并发编程是提高应用程序性能的关键手段之一,而线程池则是实现高效并发的重要工具。本文将深入探讨Java中的线程池,包括其基本原理、优势、以及如何在实际开发中有效地使用线程池。我们将通过实例和代码片段,帮助读者理解线程池的概念,并学习如何在Java应用中合理地使用线程池。
|
7天前
|
存储 Java 数据库连接
java DDD 领域驱动设计思想的概念与实战
【4月更文挑战第19天】在Java开发中,领域驱动设计(Domain-Driven Design, DDD) 是一种软件设计方法论,强调以领域模型为中心的软件开发。这种方法通过丰富的领域模型来捕捉业务领域的复杂性,并通过软件满足核心业务需求。领域驱动设计不仅是一种技术策略,而且还是一种与业务专家紧密合作的思维方式
25 2
|
8天前
|
Java 关系型数据库 MySQL
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
UWB (ULTRA WIDE BAND, UWB) 技术是一种无线载波通讯技术,它不采用正弦载波,而是利用纳秒级的非正弦波窄脉冲传输数据,因此其所占的频谱范围很宽。一套UWB精确定位系统,最高定位精度可达10cm,具有高精度,高动态,高容量,低功耗的应用。
一套java+ spring boot与vue+ mysql技术开发的UWB高精度工厂人员定位全套系统源码有应用案例
|
8天前
|
设计模式 算法 Java
Java中的设计模式及其应用
【4月更文挑战第18天】本文介绍了Java设计模式的重要性及分类,包括创建型、结构型和行为型模式。创建型模式如单例、工厂方法用于对象创建;结构型模式如适配器、组合关注对象组合;行为型模式如策略、观察者关注对象交互。文中还举例说明了单例模式在配置管理器中的应用,工厂方法在图形编辑器中的使用,以及策略模式在电商折扣计算中的实践。设计模式能提升代码可读性、可维护性和可扩展性,是Java开发者的必备知识。
|
8天前
|
安全 Java API
函数式编程在Java中的应用
【4月更文挑战第18天】本文介绍了函数式编程的核心概念,包括不可变性、纯函数、高阶函数和函数组合,并展示了Java 8如何通过Lambda表达式、Stream API、Optional类和函数式接口支持函数式编程。通过实际应用案例,阐述了函数式编程在集合处理、并发编程和错误处理中的应用。结论指出,函数式编程能提升Java代码的质量和可维护性,随着Java语言的演进,函数式特性将更加丰富。