JavaWeb – JSP:概述和语法,内置对象,JavaBean 组件,MVC(javaweb中jsp)

JavaWeb - JSP:概述和语法,内置对象,JavaBean 组件,MVC(javaweb中jsp)

JSP 的概述

概念

JSP 是 Java Server Pages 的简称,跟 Servlet 一样可以动态生成 HTML 响应, JSP 文件命名为 xxx.jsp。

与 Servlet 不同,JSP 文件以 HTML 标记为主,然后内嵌 Java 代码段,用于处理动态内容。

示例

<%@ page import="java.util.Date" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html> <head> <title>Hello Time</title> </head> <body> 现在的时间是:<%= new Date()%> </body></html>

JSP 与 Servlet 的关系

  • JSP 在静态 HTML 内容中嵌入 Java 代码,Java 代码被动态执行后生成 HTML 内容;Servlet 在 Java 代码中通过 HttpServletResponse 对象动态输出 HTML 内容。
  • JSP 经编译后就变成了 Servlet。JSP 的本质就是 Servlet,JVM 只能识别 Java 的类,不能识别 JSP 的代码,Web 容器将 JSP 的代码编译成 JVM 能够识别的 Java 类。
  • JSP 更擅长表现于页面显示,servlet 更擅长于逻辑控制。
  • Web 浏览器发送 HTTP 请求到服务端,被 Servlet 获取并进行处理(例如参数解析、请求转发);Servlet 调用核心业务逻辑获得处理结果;Servlet 将逻辑处理结果交给 JSP,动态输出 HTML 内容;动态生成的 HTML 内容返回到浏览器显示。

JSP 的语法

JSP 语法结构

声明区,程序代码区,表达式,注释,指令和动作,内置对象

声明区

基本语法:<%! %>

可以定义全局变量、方法、类。

<%! int i; public void setName(){ ... }%>

程序代码区

基本语法:<% 程序代码区 %>

可以定义局部变量以及放入任何的Java程序代码。

<% int j; for (int k=0; k<10; k ) { ... }%>

表达式

基本语法:<%= %>

可以输出一个变量或一个具体内容,但 = 后面必须是字符串变量或者可以被转换成字符串的表达式。

不需要以 ; 结束,因为只有一行。

<%= "hello world" %><%= i 1 %>

注释

注释的内容不会被执行。

<!-- HTML 文件的注释,浏览器可以查看到 --><%-- JSP 文件的注释,浏览器看不到 --%><% // Java 语言中的单行注释,浏览器看不到 /* Java 语言中的多行注释, 浏览器看不到 */%>

指令和动作

指令格式:<%@指令 属性=“属性值” %>

指令的属性可以设定多个。

JSP常用指令有:page、taglib、include。

page 指令

用于导包和设置一些页面属性,常用属性如下:

  • import 导入相应的包,惟一允许在同一文档中多次出现的属性
  • contentType 设置 Content-Type 响应报头,标明即将发送到浏览器的文档类型
  • pageEncoding 设置页面的编码
  • language 指定页面使用的语言
  • session 控制页面是否参与 HTTP 会话
  • errorPage 处理当前页面中抛出但未被捕获的任何异常
  • isErrorPage 当前页是否可以作为其他页面的错误处理页面

taglib 指令

用来扩展 JSP 程序的标签元素,引入其他功能的标签库文件。

<!-- prefix 属性用于指定库前缀 --><!-- uri 属性用于指定库的标识 --> <%@taglib uri="tagLibary" prefix="prefix" %><!-- 引入第三方的标签库 --><%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

include 指令

用于引入另一个 JSP 程序或 HTML 文件等。

JSP 引擎会在 JSP 文件的转换时期先把 file 属性设定的文件包含进来,然后开始执行转换及编译的工作。

<%@include file="被包含的文件地址" %>

jsp:include

jsp:include 动作用于引入另一个 JSP 程序或 HTML 文件等。

执行到 include 时,被 include 的文件才会被编译。

如果 include 的是 jsp 文件,那它暂时不会被转换成 Servlet 文件。

<jsp:include page="URLSpec" flush="true"/><jsp:include page="URLSpec" flush="true"> <jsp:param name="key" value="value"/></jsp:include>

include 指令和 jsp:include 动作的区别

include 指令是在 JSP 程序的转换时期就将 file 属性所指定的程序内容嵌入再编译执行(静态包含)。

jsp:include 动作在转换时期是不会被编译的,只有在客户端请求时期被执行到才会被动态的编译载入(动态包含,推荐)。

jsp:forward

jsp:forward 动作用于在 JSP 中实现转发,将请求转发到另一个指定的 JSP 程序或者 Servlet 中处理。

<jsp:forward page="urlSpec" flush="true"/><jsp:forward page="urlSpec"> <!-- 用于指定参数和其对应的值 --> <jsp:param name="key" value="value"/></jsp:forward>

JSP 内置对象

基本概念

在 JSP 程序中有 9 个内置对象由容器为用户进行实例化,程序员可以不用定义就直接使用这些变量。

在 JSP 转换成 Servlet 后,会自动追加这些变量的定义,使用内置对象可以简化 JSP 的开发。

out 内置对象

该对象类型是 JSPWriter。

该对象是一个缓冲的输出流,用来给客户端输出信息。

  • void println(String x) 向客户端输出各种类型数据
  • void newLine() 输出一个换行符
  • void close() 关闭输出流
  • int getBufferSize() 返回缓冲区的大小
  • int getRemaining() 返回缓冲区中未使用的字节数
  • void flush() 输出缓冲区里的数据
  • void clearBuffer() 清除缓冲区里的数据,同时把数据输出到客户端
  • void clear() 清除缓冲区里的数据,但不把数据输出到客户端

request 内置对象

该对象封装的是调用 JSP 页面的请求信息,它是 HttpServletRequest 接口的一个实例。

该对象的属性值只在一个请求中保存。

  • String getMethod() 返回客户端向服务器端传送数据的方式
  • String getParameter(String name) 返回客户端向服务器端传送的参数值
  • String[] getParameterValues(String name) 获得指定参数的所有值
  • String getRequestURI() 获得请求地址
  • String getRemoteAddr() 返回发送请求的客户端或最后一个代理的 IP 地址
  • int getRemotePort() 返回发送请求的客户端或最后一个代理的端口号
  • String getServerName() 获取服务器的名字
  • int getServerPort() 获取服务器端的端口
  • void setAttribute(String name, Object o) 在此请求中存储属性。属性在请求之间重置
  • Object getAttribute(String name) 将指定属性的值作为对象返回,若不存在则返回空值

response 内置对象

该对象作用是响应信息,用于给客户端输出相应的处理结果,它是 HttpServletResponse 接口的一个实例。

该对象经常用于设置 HTTP 标题,添加 cookie、设置响应内容的类型和状态、发送 HTTP 重定向和编码 URL。

  • void addCookie(Cookie cookie) 添加一个 Cookie 对象,用于在客户端保存特定的信息
  • void addHeader(String name, String value) 添加 HTTP 头信息,该 Header 信息将发送到客户端
  • boolean containsHeader(String name) 判断指定名字的 HTTP 文件头是否存在
  • void sendRedirect(String location) 重定向 JSP 文件
  • void setContentType(String type) 设置类型与编码方式

session 内置对象

该对象表示浏览器和服务器之间的一次会话;一次会话可以包含多次请求,在多次请求之间可以借助 session 对象存储信息,它是 HttpSession 类型的一个实例。

该对象的属性值在一次会话范围中保存,保存在服务器端,只要不关闭浏览器,默认半个小时内都可以访问。

  • void setAttribute(String name, Object value) 使用指定的名称将对象绑定到此会话
  • Object getAttribute(String name) 返回在此会话中用指定名称绑定的对象,如果没有对象在该名称下绑定则返回空值

application 内置对象

该对象代表全局上下文,是一个 web 程序的全局变量,它是 ServletContext 类型的一个实例。

该对象在整个服务器上保存数据,所有用户共享。

  • void setAttribute(String name, Object object) 将对象绑定到此 servlet 上下文中的给定属性名
  • Object getAttribute(String name) 返回给定名称的 servlet 容器属性,若没有该名称的属性返回 null

pageContext 内置对象

该对象表示 JSP 页面上下文,是 PageContext 类型的对象,可以使用这个对象来管理其他的隐含对象。

该对象只在一个页面中保存数据。

  • void setAttribute(String name, Object value, int scope) 使用适当的作用域设置指定的名称和值
  • Object getAttribute(String name, int scope) 返回指定作用域中名称关联的对象,若找不到则返回 null
  • ServletRequest getRequest() 获取请求对象
  • ServletResponse getResponse() 获取响应对象
  • HttpSession getSession() 获取会话对象
  • ServletConfig getServletConfig() 获取配置对象
  • JspWriter getOut() 获取输出对象
  • Object getPage() 获取页面对象
  • Exception getException() 获取异常对象

page 内置对象

该对象的类型是 Object。

该对象是 JSP 页面本身。

config 内置对象

该对象的类型是 ServletConfig。

该对象是 Servlet 配置对象。

exception 内置对象

该对象是 Throwable 的实例,表示的是 JSP 的异常信息,作用是捕获网页异常。

如果要使用它,必须将跳转的错误页面(如 error.jsp)的 page 指令的 isErrorPage 属性设置成 true。

单个页面的处理方式:

<%@page errorPage="error.jsp" %>

在 web.xml 中配置统一的异常处理页面:

<error-page> <exception-type>java.lang.Throwable</exception-type> <location>/error.jsp</location></error-page>

JavaBean 组件

基本概念

JavaBean 是使用 Java 语言开发的一个可重用的组件,在 JSP 开发中可以使用 JavaBean 减少重复代码,使整个 JSP 代码的开发更加简洁。

JavaBean 本质上就是 Java 类,通常要求如下:

  • 属性 – 全部私有化,通过 get 和 set 方法进行访问。
  • 方法 – 必须是 public 关键字修饰。
  • 构造器 – 必须有无参构造方法。

使用方式

使用 jsp:useBean 的方式创建 javaBean 实例;保存范围有 page|request|sessin|application,默认为 page 范围。

<jsp:useBean id="对象名" scope="保存范围" class="包名.类名" />

使用 jsp:setProperty 的方式设置 javaBean 的属性值。

<jsp:setProperty name="对象名" property="属性名" value="属性值" param="参数名"/>

使用 jsp:getProperty 的方式获取 javaBean 的属性值。

<jsp:getProperty name="对象名" property="属性名"/>

保存范围

JavaBean 的保存范围有 page、request、session 以及 application,默认是 page 范围。

删除方式

<% 内置对象.removeAttribute(“JavaBean 的名字”); %>

MVC 设计模式

基本概念

MVC 是模型(Model)和视图(View)以及控制器(Controller)的简写,是一种将数据、界面显示和业务逻辑进行分离的组织方式,这样在改进界面及用户交互时,不需要重新编写业务逻辑,从而提高了代码的可维护性。

M:主要用于封装业务数据的 JavaBean(Bean) 和 业务逻辑的 JavaBean(Service) 及访问数据库的 DAO 对象。

V:主要负责数据收集和数据展现,通常由 JSP 文件完成。

C:主要负责流程控制和页面跳转,通常由 Servlet 完成。

基本模型

  1. 浏览器发起请求;
  2. Servlet 接受处理请求,通过 JavaBean 封装业务数据和业务逻辑;
  3. Servlet 通过 Dao 对象来访问数据库,数据库把数据以 JavaBean 的形式发给 Servlet;
  4. Servlet 对数据进行业务逻辑处理并将结果发给 JSP;
  5. JSP 动态输出 HTML 页面到浏览器。

想了解更多,欢迎关注我的微信公众号:Renda_Zhang

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
上一篇 2024年5月14日 上午10:23
下一篇 2024年5月14日 上午10:35

相关推荐

  • 西工大的科研项目有哪些

    以西工大的科研项目有哪些为标题: 西工大的科研项目涵盖了许多不同的领域,包括计算机科学,机械工程,材料科学,电子工程等等。这些项目都是为了满足社会和科学的需求而开发的。 例如,西工…

    联系我们 2024年12月9日
    0
  • 把数字技术广泛应用于政府管理服务(构建数字政府,让技术创新更好服务经济社会发展)

    来源:人民网-人民日报 加强数字政府建设,是贯彻以人民为中心发展思想的必然要求,也是增强数字政府效能的必然选择 北京市将数字化思维融入政府治理全过程,通过大数据分析民生需求,对群众…

    联系我们 2022年5月22日
    309
  • 软件研发项目管理软件

    软件研发项目管理软件:助力软件开发团队高效协同 随着软件开发行业的不断发展,软件研发项目管理软件已经成为了软件开发团队必不可少的工具。这些工具可以帮助软件开发团队更好地管理项目进度…

    联系我们 2024年9月18日
    22
  • 西北师范大学研究成果分类

    西北师范大学研究成果分类 西北师范大学是中国西北地区著名的综合性大学,拥有着悠久的历史和深厚的文化底蕴。近年来,该校在科学研究方面取得了许多重要的成果,下面对其主要研究成果进行分类…

    联系我们 2024年12月9日
    0
  • 朱景文

    朱景文是一位优秀的中文教师,他从事中文教育已经有数十年的时间。在他的课堂上,学生们不仅能够学到传统的中文知识,还能够了解到中国文化的最新动态。 朱景文老师非常热爱中文,他坚信中文是…

    联系我们 2024年12月5日
    0
  • 【党建知识】如何做好党员管理工作(怎么做好党员管理工作)

    党员管理工作是党的建设的重要组成部分,是加强党的建设的基本途径之一,是实现党的政治路线的重要保证。党员管理是党组织按照党章和党内的有关规定,通过一定的方式和手段,使党员认真履行义务…

    联系我们 2023年5月31日
    419
  • 项目风险管理的一般流程(项目风险管理的基本流程)

    风险需要按照严格约定好的管理流程来进行管理。越是不确定的事情,越需要有良好的应对措施,避免风险来临时手忙脚乱毫无章法。 PMBOK中提供了一套经过实践检验的风险管理流程。分为如下几…

    联系我们 2022年5月23日
    442
  • 环保工程项目管理软件

    环保工程项目管理软件 随着环保意识的提高,越来越多的企业在环保领域投入了大量的人力、物力和财力。环保工程项目管理软件是为了帮助企业管理环保工程项目,提高项目的效率和质量而设计的。在…

    联系我们 2024年9月18日
    26
  • 自科课题结题在那里查询啊

    自科课题结题在那里查询啊 自科课题结题是指完成一个科学研究项目的结题报告,通常用于学术界和工业界。完成一个自科课题需要经过长期的研究和实验,并且需要提交一份详细的结题报告。在完成自…

    联系我们 2024年12月9日
    0
  • 昆山祖冲之攻关计划产学研政策

    昆山祖冲之攻关计划产学研政策 昆山市是江苏省中部的一个城市,位于江苏省中部,是一个重要的经济中心。在这里,我们有一个著名的文化名人——祖冲之。祖冲之是中国著名的数学家,他在数学领域…

    联系我们 2024年12月5日
    1