JSP教程–最终指南

编者注: JavaServer Pages(JSP)技术使您可以轻松创建同时包含静态和动态组件的Web内容。 JSP技术提供了Java Servlet技术的所有动态功能,但提供了一种更自然的方法来创建静态内容。

JSP技术的主要功能包括用于开发JSP页面的语言,该语言是描述如何处理请求和构造响应的基于文本的文档,用于访问服务器端对象的表达语言以及用于定义JSP语言扩展的机制。

这是一篇独立的参考文章,旨在提供有关如何使用JSP的框架,并帮助您快速启动自己的应用程序。 请享用!

目录

1.简介
1.1。 为什么JSP比Servlet更受青睐?
2.生命周期
2.1。 翻译 2.2。 汇编 2.3。 加载和初始化 2.4。 执行 2.5。 毁灭
3.演示:首先 4.指令
4.1。 句法 4.2。 种类
5.脚本标签
5.1。 种类 5.2。 例
6.表达语言
6.1。 经营者 6.2。 隐式对象
7.异常处理
7.1。 介绍 7.2。 方法 7.3。 ErrorPage和isErrorPage 7.4。 在web.xml中
8.国际化
8.1。 区域设置类
9.会议
9.1。 方法 9.2。 例
10. JavaBean
10.1。 JavaBean属性 10.2。 useBean标签 10.3。 标签的属性 10.4。 例
11.请求和响应对象
11.1。 请求 11.2。 HttpServletRequest 11.3。 HttpServletResponse
12.参考
12.1。 网站 12.2。 书
13.总结 14.下载

1.简介

Java Server Pages(JSP)用于创建动态网页。 可以使用JSP标记将Java代码插入HTML页面。 这些标记用于从数据库检索信息,在页面之间共享信息等。通常用于运行JSP页面的IDE是NetBeansIDE和EclipseIDE。

为什么JSP比Servlet更受青睐?

  • JSP提供了一种创建和管理动态网页的简便方法。
  • 它不需要其他文件,例如java类文件和web.xml
  • 由于JSP由Web容器处理以对其代码进行任何更新,因此不需要像servlet一样进行重新编译。
  • 可以直接访问JSP页面,而Servlet需要使用web.xml进行映射。

2.生命周期

JSP生命周期与Servlet生命周期相同,只是增加了一步。 在此步骤中,将JSP编译到servlet中。 生命周期如下图所示:

image001

翻译

在第一阶段,Web容器将JSP文档转换为等效的Java代码。 此Java代码是一个Servlet。 转换由Web服务器自动完成,该Web服务器定位,验证正确性并为JSP页面编写servlet。

汇编

在此阶段,JSP容器编译Java源代码,以创建相应的servlet和生成的类文件。

加载和初始化

在第三阶段,JSP容器加载在前两个阶段中生成的servlet。 正确加载后,JSP容器将创建servlet类的实例。 在这里,它使用无参数构造函数。

现在,JSP容器通过调用init方法初始化实例化的对象。 这是由容器通过调用jspInit()方法实现的。

public void jspInit() {// Initialization code...
}

执行

在此步骤中,JSP引擎调用_jspService()方法。 该方法有两个参数,即HttpServletRequest和HttpServletResponse,每个请求调用一次。 它还负责生成对此请求的响应。

void _jspService(HttpServletRequest request, HttpServletResponse response)
{
}

毁灭

最后一步完成了生命周期。 在这种情况下,容器使用jspDestroy()方法删除JSP。

public void jspDestroy()
{// any cleanup code
}

3.演示:首先

这是JSP使用的示例。 请遵循以下步骤,使用Eclipse IDE从第一个JSP应用程序开始。 使用的技术如下:

  • Java 1.8
  • Eclipse IDE:适用于Web开发人员的Eclipse Java EE IDE 4.4.1
  • JSP
  • Apache Tomcat 8

图1:让我们开始创建一个新的动态Web项目:

创建一个新的动态Web项目

图2:将项目名称添加为RankWebApplication ,然后单击Next

image003

跳过此步骤以配置项目,然后单击下一步,因为我们专注于一个简单的演示项目。

图3:配置项目:

image004

图4:配置Web模块设置; 避免生成web.xml文件,因为此演示项目不需要该文件。

image005

单击完成后 ,将创建动态Web项目。 该项目的目录在“ Package Explorer”下的左面板上可见:

图5:项目目录结构:

图片006

右键单击WebContent目录,然后将新的JSP文件添加到项目中。

图6:现在,在动态Web项目中添加JSP文件:

image007

图7:从向导添加新的JSP文件:

image008

单击上面的Next之后,将新文件命名为NewRankFile.jsp并单击Next

图8:添加了NewRankFile.jsp:

image009

图9:设置JSP模板:

image010

单击上方的完成将创建新文件。 现在,在清单1中添加以下给定的代码,该代码显示板球队的排名。

清单1:NewRankFile.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>ICC Ranking</title>
</head>
<body>
<h1>ICC ODI Ranking</h1><table><tr><th>Rank</th><th>Country</th></tr><tr><td>1</td><td>Australia</td></tr><tr><td>2</td><td>India</td></tr><tr><td>3</td><td>South Africa</td></tr></table><!--  JSP Expression is used here for getting system date --><b>Note:</b> Website updated on: <%= (new java.util.Date()).toLocaleString()%></body>
</html>

右键单击并选择运行方式运行项目。

图10:从选项中单击在服务器上运行

image011

选择“在服务器上运行”,然后在EclipseIDE中运行第一个项目时, 手动定义一个新服务器“ Tomcat” 。 选中“在运行此项目时始终使用此服务器”,以避免重复此选择:

图11:选择服务器:

image012

在这里,输出显示使用JSP表达式生成的ICC排名和网站更新时间。 输出链接:http:// localhost:8080 / RankWebApplication / NewRankFile.jsp

图12:显示ICC ODI排名和网站更新时间的输出:

image013

4.指令

指令标签用于提供在JSP生命周期的翻译阶段使用的指导和说明。

句法

<%@ directive attribute="value" %>

这里的指令可以具有许多属性。

种类

图13:指令标记的类型:

image014

4.2.1。 页面指​​令

页面指​​令标签提供了在JSP生命周期的转换阶段翻译人员使用的指令。 它可以包含在任何位置,但是根据惯例,它被认为是一种在顶部包含它的良好编程风格。 语法如下:

<%@page attribute ="value" %>

XML等效项如下所示:

<jsp:directive.page attribute="value" />

让我们以在页面顶部包含属性作为导入的示例为例。

<%@ page import="java.util.Date" %>

页面指​​令标记中使用的属性如下:

属性
自动冲洗 它有两个值– true和false,默认值为true。 它指定在缓冲区已满时是否自动刷新输出。
缓冲 它以缓冲区大小(以千字节为单位)指定缓冲模型。
内容类型 它指定字符编码方案,默认为text / html。
延伸 它采用由Servlet等效类扩展的合格类名。
errorPage 它指定另一个页面的URL路径,将请求发送到该页面以处理当前JSP页面引发的运行时异常。
进口 该值是用逗号分隔的Java类列表,
信息 它指定可由getServletInfo()方法访问的字符串。
isErrorPage 它指定当前页面是否是具有两个值true和false的错误页面。 默认值为false。
pageEncoding 它指定编码类型。

4.2.2包含指令

在JSP生命周期的转换阶段使用此标记来包括文件。 它合并了另外两个文件的内容。 包含指令可以包含在页面中的任何位置。 语法如下:

<%@ include file="path/url" >

让我们以文件newFile.jsp为例,该文件可以放在需要的地方。

<%@ include file="newFile.jsp" %>

4.2.3标签库

它用于在JSP页面中定义定制标记库。 这样做是为了使相关标签可以在同一页面中使用。 语法如下:

<%@ taglib uri="URI" prefix="TagPrefix" %>

5.脚本标签

JSP脚本标记允许将脚本代码添加到生成的JSP页面的Java代码中。 该页面由JSP转换器生成。

种类

三种类型的Scriptlet标签或Scriptlet元素如下所示:

5.1.1。 脚本标签

Scriptlet标记通过编写脚本/ Java代码来实现_jspService方法功能。 它用于在JSP页面中编写Java代码。 语法如下:

<% Java code %>

等效的XML:

script code

示例如下:

<% out.println(value); %>

5.1.2。 声明性标签

声明标签被用来声明类变量和实现类方法jspIntjspDestroy。 语法如下:

<%!Declaration 
%>

等效的XML:

<jsp:declaration>script code
</jsp:declaration>

示例如下:

<%!int value = 25;
%>

5.1.3。 表达标签

Expression Tag用于编写Java表达式。 切勿在表达式标签内使用分号(;)结束表达式。 语法如下:

<%= Java Expression %>

等效的XML:

<jsp:expression>script code
</jsp:expression>

示例如下:

<%= --value %>
<%= (3*9) %>

此示例显示了三种脚本标记类型。 请遵循“演示”部分中给出的步骤,以便在EclipseIDE中创建一个项目。 使用的技术是相同的。

让我们从在Eclipse IDE中创建Dynamic Web Project ExampleApplication开始:

图14:创建示例应用程序:

image015

图15:创建exampleCalculation.jsp:

image016

清单2:example.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Scriptlet Tag Example</title>
</head>
<h1>Example to print k iterations</h1><%!int k;%><body><%for(k=1;k<=10;++k) {out.println(k);}
%>
<br>
<%out.println("The value of --k is:");%><%= --k %><br>Updated on: <%= (new java.util.Date()).toLocaleString() %>
</body>
</html>

图16:输出打印k次迭代和网站更新日期:

image017

6.表达语言

一种使JSP开发人员能够访问存储在JavaBeans组件中的应用程序数据的语言。 它是在JSP2.0中引入的

EL表达式包含在“ $”和“}”字符之间。

经营者

6.1.1。 算术运算符

这些算术运算符可用于EL表达式:_,-,/,*,%

6.1.2。 关系运算符

EL表达式中使用的关系运算符可用以下给定符号和短文本形式表示:

经营者 短文字形式 内容描述
> gt 比...更棒 $ {150> 5}
< lt 少于 $ {15 <65}
> = ge 大于等于 $ {20> = 20}
<= 小于等于 $ {15 <= 15}
== 当量 等于 $ {5 == 5}
!= NE 不等于 $ {15!= 65}

6.1.3。 逻辑运算符

逻辑运算符是&&(AND运算符),|| (或运算符)和! (非运营商)

隐式对象

隐式对象可以直接在EL表达式中使用。 用户可以使用这些对象从不同的作用域和参数值获取属性。 下面给出一些隐式对象的类型:

宾语 描述
pageContext 它操纵页面属性。
pageScope 它将页面范围的属性名称映射到它们的值。
requestScope 它将请求范围的属性名称映射到它们的值。
sessionScope 它将会话范围的属性名称映射到它们的值。
应用范围 它将应用程序范围的属性名称映射到它们的值。
参数 它将参数名称映射到单个String参数值。
参数值 它将参数名称映射到String []。
标头 它将标头名称映射到单个String标头值。
headerValues 它将标头名称映射到String []。

6.2.1。 例

这是显示隐式对象参数的示例。 请按照“演示”部分中给出的步骤在EclipseIDE中创建项目。 使用的技术是相同的。

让我们从在Eclipse IDE中创建动态Web项目UserApplication开始:

图17:创建UserApplication

image018

图18:创建新的jsp文件home.jsp

图18

清单3:home.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Welcome</title>
</head>
<body>
<h1>Fill the form given below:</h1>
<form method="post" action="success.jsp">
User : <input type="text" name="userName"><br>
Email: <input type="email" name="emailID">
<input type="submit" value="submit">
</form></body>
</html>

图19:创建新的jsp文件success.jsp

image016

清单4:success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Email Successfully sent</title>
</head>
<body>
<h1>Success</h1>
<br>
<p>Hi ${param.userName}, thanks for giving the details.</p>
<p>Your unique password has been sent to you on <b>${param.emailID}</b></p>
</body>
</html>

现在,我们将在EclipseIDE中运行UserApplication 。 本地主机地址为:http:// localhost:8080 / UserApplication / home.jsp

图20:运行应用程序后的home.jsp

image019

在这里,您可以添加自己的电子邮件。 我已经考虑过电子邮件,demo @ email.com

图21:添加用户名和电子邮件:

image020

图22:单击“提交”按钮后,输出显示在此处:

image021

7.异常处理

介绍

异常是程序的正常执行流程中的异常/不可预见的情况。 由于输入无效,访问磁盘上不可用的文件等原因,可能会发生这些异常。

在运行时处理这些异常称为异常处理。 用户在JSP代码中可能会遇到以下类型的错误:

7.1.1。 失误

这些是用户无法控制的问题。 例如,堆栈溢出将导致错误。

7.1.2。 检查异常

这些是编译时不能忽略的异常,被视为用户错误。 例如,IOException

7.1.3。 运行时异常/未经检查的异常

在运行时可以忽略这些异常。 例如,NullPointerException

方法

这是Throwable类中可用的重要方法的列表。 您可以从oracle官方文档中参考完整列表。

方法 描述
公共Throwable getCause() 返回此throwable的原因。 如果原因未知,则返回null。
公共字符串getMessage() 返回此throwable的消息字符串。
公共字符串toString() 返回对此throwable的描述。
公共无效printStackTrace() 它打印堆栈跟踪。
公共Throwable fillInStackTrace() 它填充执行堆栈跟踪。

ErrorPage和isErrorPage

页面指​​令的ErrorPage属性用于设置错误页面。 为此,请使用以下给定的指令。 任何jsp页面都可以设置为错误页面,这里是“ DisplayError.jsp ”:

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

isErrorPage属性用于通过包含以下指令来生成异常实例变量。 您还必须编写DisplayError.jsp:

<%@ page DisplayError="true">

7.3.1。 例

这是显示上面讨论的两个指令的用法的示例。 请按照“演示”部分中给出的步骤在EclipseIDE中创建项目。 使用的技术是相同的。

让我们从在Eclipse IDE中创建动态Web项目ErrorHandlingApplication开始:

图23:创建ErrorHandlingApplication:

image022

图24:创建jsp文件conditionChecker.jsp:

image023

在这里,将errorPage设置为DisplayError.jsp:

清单5:conditionChecker.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page errorPage="DisplayError.jsp" %><html>
<head><title>Error Handling Example</title>
</head>
<body>
<%// Throw an exception to invoke the error pageint s = 10;if (s < 5) {out.println("Bingo!!well done!! You're right");}else {throw new RuntimeException("Error found - "); }
%>
</body>
</html>

图25:创建错误文件DisplayError.jsp:

image024

在这里,属性isErrorPage设置为true:

清单6:DisplayError.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page isErrorPage="true" %>
<html>
<head>
<title>Error Page</title>
</head>
<body>
<h1>Sorry :Error occurred</h1>
<b>Stack trace:</b>
<pre>
<% exception.printStackTrace(response.getWriter()); %>
</pre>
</body>
</html>

在web.xml中

<Error-page>可以包含在部署描述符(即web.xml)中。 通过此功能,用户还可以为不同的异常类型甚至HTTP错误代码配置不同的错误页面。

当出现状态码为404的错误时,将调用jsp文件anyErrorPage.jsp,如下所示:

清单7:错误代码404

<error-page><error-code>404</error-code><location>/anyErrorPage.jsp</location>
</error-page>

如果应用程序引发IOException,则将调用anyErrorPage.jsp:

清单8:对于Exception-TypeIOException

<error-page><exception-type>java.io.IOException</exception-type ><location>/HandlerClass</location>
</error-page>

如果要避免添加单独的元素的开销,请使用java.lang.Throwable作为异常类型:

清单9:对于所有异常,请提及java.lang.Throwable:

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

8.国际化

Web应用程序被世界各地的人们访问; 这引起了国际化的需求。 国际化使Web应用程序可以在不同的国家和地区工作,而无需进行更改和重新编译代码。

区域设置类

国际Java应用程序使用java.util.Locale类。 语言环境定义语言和地理区域。

8.1.1。 语言环境类的构造函数

它具有三个构造函数,可通过这些构造函数构造一个语言环境对象:

建设者 描述
语言环境(字符串lang) 它使用语言代码构造一个Locale对象
语言环境(字符串lang,字符串国家/地区) 它使用语言代码和国家/地区代码构造一个Locale对象。
语言环境(字符串lang,字符串国家/地区,字符串变体) 它使用语言代码,国家/地区代码和变体构造一个Locale对象。

这是国际化的一个例子。 请按照“演示”部分中给出的步骤在EclipseIDE中创建项目。 使用的技术是相同的。

让我们开始在Eclipse IDE中创建Dynamic Web Project LocaleApplication。

图26:动态Web项目LocaleApplication

image025

图27:创建新的jsp文件LocaleFile.jsp

image026

清单10:LocaleFile.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<%@ page import="java.io.*,java.util.Locale" %>
<%@ page import="javax.servlet.*,javax.servlet.http.* "%>
<%// get the user's LocaleLocale userLocale = request.getLocale();String userCountry = userLocale.getCountry();
%><html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Finding the Locale of user</title>
</head>
<body>
<% out.println("Your Country  : " + userCountry);
%></body>
</html>

图28:输出如http:// localhost:8080 / LocaleApplication / LocaleFile.jsp所示 :

image027

9.会议

会话是客户端和服务器之间的HTTP请求的集合。 这3种方式用于维护服务器和客户端之间的会话,即cookie,URL重写和隐藏的表单字段。 JSP还利用servlet提供的HttpSession接口。 下面列出了一些方法及其说明:

方法

会话对象中的一些重要方法:

方法 描述
公共对象getAttribute(字符串名称)

返回在此会话中绑定了指定名称的对象,如果该名称下未绑定任何对象,则返回null。

公共字符串getId() 返回一个字符串,其中包含分配给该会话的唯一标识符。
公共长getLastAccessedTime() 返回客户最后一次发送与此会话相关联的请求的时间,以格林尼治标准时间1970年1月1日午夜以来的毫秒数为单位。
公共无效invalidate() 使该会话无效,并取消绑定到该会话的任何对象。
公共无效removeAttribute(字符串名称) 从此会话中删除与指定名称绑定的对象。
公共无效setAttribute(字符串名称,对象值) 使用指定的名称将对象绑定到该会话。
公共无效setMaxInactiveInterval(int间隔) 指定客户端请求之间的时间间隔(以秒为单位),该时间间隔表示servlet容器使该会话无效。

这是jsp中会话处理的示例。 请按照“演示”部分中给出的步骤在EclipseIDE中创建项目。 使用的技术是相同的。

使用jsp文件SessionHandling.jsp创建项目“ SessionApplication”

清单11:SessionHandling.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><%@ page import="java.io.*,java.util.*" %>
<%// creation time of sessionDate create = new Date(session.getCreationTime());Integer visitCount = new Integer(0);String key = new String("visitCount");// for new visitorif (session.isNew()){session.setAttribute(key, visitCount);} visitCount = (Integer)session.getAttribute(key);visitCount = visitCount + 1;session.setAttribute(key,  visitCount);
%>
<html>
<head>
<title>Session Tracking</title>
</head>
<body>
<h1>Session Tracking</h1>
<table border="1"> 
<tr><th>Session Information</th><th>Value</th>
</tr> 
<tr><td>id</td><td><% out.print(session.getId()); %></td>
</tr> 
<tr><td>Creation Time</td><td><% out.print(create); %></td>
</tr> <tr><td>Number of visits</td><td><% out.print(visitCount); %></td>
</tr> 
</table> 
</body>
</html>

图29:显示会话信息的输出– visit1:

image028

图30:显示会话信息的输出– visit2:

image028

图31:显示会话信息的输出– visit3:

image029

10. JavaBean

JavaBeans是用Java编写的Java类,用于开发动态内容。 它将业务逻辑与表示逻辑分开。

表示代码和业务逻辑可以分开管理。 JavaBeans还确保它们之间的通信。

JavaBean属性

JavaBean属性是一个命名属性,可以是任何数据类型。 可以通过以下给定方法访问这些属性:

  • setPropertyName():仅写属性将仅具有setPropertyName()方法。
  • getPropertyName():只读属性将具有getPropertyName()方法。

useBean标签

<jsp:useBean>语法为:

<jsp:useBean attributes><!--  content -->
</jsp:useBean>

这些属性如下:

标签的属性

10.3.1。 ID

这表示分配给的id属性的变量名,用于查找现有的bean实例。

10.3.2。 范围

此属性表示Bean实例必须位于的范围。 范围在下面列出,此处默认为页面范围:

  • 页面范围
  • 请求范围
  • 会话范围
  • 适用范围

10.3.3。 类

它是用于创建bean实例的类名,但该类不应是抽象类。

10.3.4。 bean名称

它采用合格的类名称或表达式。

10.3.5。 类型

它采用合格的类名称或接口。

这是jsp中bean处理的示例,其中包括用于bean创建和访问的代码段。

10.4.1。 豆类创作

清单12:EmployeeClass.java

在这里,EmployeeClass显示了Bean的创建,该Bean具有一些用于雇员姓名和工作点的属性。

import java.io.Serializable;public class EmployeeClass implements Serializable
{private int points = 0;private String name = null;public EmployeeClass() {}public String getName(){return name;}public int getPoints(){return points;}public void setName(String firstName){this.name = name;}public void setPoints(Integer points){this.points = points;}
}

10.4.2。 访问豆

action用于访问get方法,而action用于访问set方法。 这些可以与动作配合使用。

清单13:BeansApplication.jsp

一个示例,说明如何访问JavaBeans属性。

<html>
<head>
<title>Employee Work Report</title>
</head>
<body><!-- setProperty -->
<!-- name attribute under setProperty references the id of beans in useBean action -->
<jsp:useBean id="emp" class="com.new.EmployeeClass"> <jsp:setProperty name="emp" property="name" value="Mahendra"/><jsp:setProperty name="emp" property="points" value="50"/>
</jsp:useBean><!-- getProperty -->
<!-- name attribute under getProperty references the id of beans in useBean action -->
<p>Name of the Employee: 
<jsp:getProperty name="emp" property="name"/>
</p>
<p>Work Performance Points: 
<jsp:getProperty name="emp" property="points"/>
</p></body>
</html>

清单13:显示bean实现的输出

Name of the Employee: Mahendra
Work Performance Points: 50

11.请求和响应对象

请求

Web浏览器请求Web页将信息发送到Web服务器。 该头信息包括以下内容:

接受 接受字符集
接受编码 接受语言
授权书 连接
内容长度 曲奇饼
主办 用户代理

HttpServletRequest

它是javax.servlet.http.HttpServletRequest对象的实例。 这些方法可用于HttpServletRequest对象,并用于在JSP程序中获取HTTP标头信息。 其中一些在下面给出说明:

方法 描述
Cookie [] getCookies() 返回一个数组,其中包含客户端与此请求一起发送的所有Cookie对象。

枚举getHeaderNames() 返回此请求包含的所有标头名称的枚举。

枚举getParameterNames() 返回包含此请求中包含的参数名称的String对象的Enumeration。

对象getAttribute(字符串名称) 将命名属性的值作为Object返回;如果不存在给定名称的属性,则返回null。

字符串getCharacterEncoding() 返回此请求正文中使用的字符编码的名称。

字符串getMethod() 返回发出此请求的HTTP方法的名称,例如GET,POST或PUT。

字符串getPathInfo() 返回与客户端发出此请求时发送的URL关联的任何其他路径信息。

字符串getQueryString() 返回路径后面的请求URL中包含的查询字符串。

字符串getRemoteAddr() 返回发送请求的客户端的Internet协议(IP)地址。

字符串getRequestedSessionId() 返回客户端指定的会话ID。

HttpServletResponse

它是javax.servlet.http.HttpServletResponse对象的实例。 这些方法可用于HttpServletResponse对象,并用于在Servlet程序中设置HTTP响应标头。

方法 描述
布尔containsHeader(字符串名称) 通过在其中包含会话ID对指定的URL进行编码,或者,如果不需要编码,则返回不变的URL。

布尔containsHeader(字符串名称) 返回一个布尔值,指示是否已设置命名响应头。

无效addCookie(Cookie cookie) 将指定的cookie添加到响应中。

void addHeader(字符串名称,字符串值) 添加具有给定名称和值的响应头。

void setContentLength(int len) 设置响应中内容主体的长度在HTTP servlet中,此方法设置HTTP Content-Length标头。

void setContentType(String type) 如果尚未提交响应,则设置发送给客户端的响应的内容类型。

void setHeader(字符串名称,字符串值) 用给定的名称和值设置响应头。

setLocale(Locale loc)无效 设置响应的语言环境(如果尚未提交响应)。

setIntHeader(字符串名称,整数值) 用给定的名称和整数值设置响应头。

12.参考

网站

  • Sun官方网站
  • 免费Java下载
  • 免费Eclipse IDE下载

  • 首要的Servlet和JSP:通过Sun认证的Web组件开发人员考试,作者Bryan Basham,Kathy Sierra和Bert Bates
  • Jdbc,Servlet和Jsp黑皮书,新版平装本-2008,Santosh Kumar

13.总结

Java Server Pages(JSP)用于创建动态网页。 通过本指南,您可以轻松学习与JSP相关的概念。 项目代码是在EclipseIDE下开发的,因此您还将对它的一些惊人的用户友好功能有所了解。

14.下载

这是有关JavaServer Pages(JSP)的教程。

下载
您可以在这里下载本教程的完整源代码: jsp_tutorial

翻译自: https://www.javacodegeeks.com/2015/06/jsp-tutorial.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/359503.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tongweb6数据源使用中时常报空异常处理方式

1.在tongweb控制台 -> jdbc配置中设置数据源参数 1.1 勾选空闲超时&#xff0c;时间默认 1.2 勾选泄露超时时间 &#xff0c;时间为半天&#xff08;14400&#xff09; 1.3 勾选连接有效性检查、创建连接验证、获取连接验证、归还连接验证 图中设置泄露超时时间为900…

eclipse远程tomcat javaweb debug样例(windows)

1.tomcat配置可被远程debug端口参数 catalina.bat 中添加 set CATALINA_OPTS-Xdebug -agentlib:jdwptransportdt_socket,servery,suspendn,address8000 导出项目war包到tomcat/webapps/目录下 切换到tomcat/bin目录下 双击startup.bat启动运行项目 2.eclipse中启动远程debug…

ASP.NET MVC的ContentResult

ASP.NET MVC的ContentResult返回简单的纯文本内容&#xff0c;可通过ContentType属性指定应答文档类型&#xff0c;通过ContentEncoding属性指定应答文档的字符编码。一个例子来演习&#xff0c;自定义一个RwResult&#xff0c;它继承ContentResult&#xff0c;为视图象ASP.NET…

windows搜索指定目录下包含某个字符串的文件

1.打开cmd窗口 &#xff1a;winr 快捷键-> 输入cmd 回车 2.切换到被搜索的文件夹&#xff08;E:\shgwy文档\日常\更新\20220808&#xff09;下 如输入&#xff1a; cd E:\shgwy文档\日常\更新\20220808 e: 3.输入搜索命令 c:\Windows\System32\findstr.exe /s /i "wa…

IIS7日志文件位置

准备统计下页面访问量 查找IIS日志,发现在以前IIS6日志的位置&#xff0c;竟然木有找到日志... 查看下IIS设置&#xff0c;发现IIS7和6的默认日志位置不一样额... IIS 6 Log files location IIS 6中日志文件的位置 %windir%\System32\LogFiles IIS 7 Log files location IIS的日…

jwt重放攻击_4个点搞懂JWT、JWS、JWE

1.JWT是何物&#xff0c;有哪些常用的场景JWT(json web token)是设计一种简洁&#xff0c;安全&#xff0c;无状态的token的实现规范rfc7519&#xff0c;通常用于网络请求方和网络接收方之间的网络请求认证。jwt的常用场景1.1: restful api接口的无状态认证, 在传统的web应用中…

Verification Mind Games---how to think like a verifier像验证工程师一样思考

1. 有效的验证需要验证工程师使用不同于设计者的思维方式思考问题。具体来说&#xff0c;验证更加关心在严格遵循协议的基础上发现设计里面的bug&#xff0c;搜索corner cases&#xff0c;对设计的不一致要保持零容忍的态度。mindset&#xff1a;一套人们应该持有的确定的态度&…

discuz安装_手动搭建 Discuz! 论坛

一、搭建LAMP环境安装软件(Apache、MariaDB、PHP)yum install httpd php php-fpm php-mysql mariadb mariadb-server -y2.启动服务systemctl start httpdsystemctl start mariadbsystemctl start php-fpm3.安装后首次启动mariadb设置mysql_secure_installation4.登录 MariaDB&a…

蓝桥杯 1223 第 2 场 小白入门赛

蓝桥小课堂-平方和 模拟 1 2 2 2 3 2 ⋯ n 2 n ⋅ ( n 1 ) ⋅ ( 2 n 1 ) 6 1^22^23^2\cdotsn^2\dfrac{n\;\cdot\;(n 1)\;\cdot\;(2n1)}{6} 122232⋯n26n⋅(n1)⋅(2n1)​。 write(n * (n 1) * (n * 2 1) / 6);房顶漏水啦 m a x ( 最大的行 − 最小的行 , 最大的列 −…

jar包是什么意思_面试难度五颗星:JVM有Full GC,为什么还会 OutOfMemoryError?

点击上方蓝色“后端面试那些事儿”&#xff0c;选择“设为星标”学最好的别人&#xff0c;做最好的我们来源&#xff1a;R 大zhihu.com/question/38511221问题&#xff1a;R大回复平时有逛知乎的习惯&#xff0c;一般对JVM相关话题比较感兴趣。偶然看到这个问题&#xff0c;结果…

系统执行sql很慢达梦工具执行很快的简单解决方式

现象描述&#xff1a;系统功能查询很慢&#xff0c;拷贝查询sql到达梦工具中执行速度很快 1.问题分析&#xff1a; 达梦SQL执行耗时异常问题排查_qq_39693441的博客-CSDN博客_sql耗时分析 2.解决方式1&#xff1a; 在程序sql中拼接随机数如&#xff1a; select /*动态随机数*…

roads 构筑极致用户体验_长安马自达「悦马星空」计划上线,为用户带来极致服务体验...

日前,第十八届广州车展顺利举行。期间各大汽车品牌齐聚亮相,这其中,也包括众人熟悉的长安马自达。据悉,在本次车展上,长安马自达除携品牌全系车型次世代MAZDA3 昂克赛拉、2020款MAZDA CX-5、MAZDA CX-30和MAZDA CX-8亮相外,还正式发布「悦马星空」用户共创计划。资料显示,「悦马…

从数百万个光纤(而不是数千个线程)中查询数据库

jOOQ是在Java中执行SQL的好方法&#xff0c; Quasar光纤带来了大大提高的并发性 我们很高兴在平行宇宙的 Fabio Tudone的jOOQ博客上宣布另一个非常有趣的来宾帖子。 Parallel Universe开发了一个开源堆栈&#xff0c;使开发人员可以轻松地在JVM上对极端的并发应用程序进行编码…

Oracle11.2.0.4 RAC安装文档

1 环境配置 参考官方文档《Grid Infrastructure Installation Guide for Linux》 1.1 软件环境 操作系统&#xff1a; [roothowe1 ~]# cat /etc/redhat-release Red Hat Enterprise Linux Server release 6.2 (Santiago) [roothowe1 ~]# uname -a Linux howe1 2.6.32-220.el6.i…

captcha库_将CAPTCHA添加到您的GWT应用程序

captcha库什么是验证码&#xff1f; 在一个充满恶意机器人的世界中&#xff0c;您应该怎么做才能保护您宝贵的Web应用程序&#xff1f; 您真正应该做的基本事情之一就是向其中添加CAPTCHA功能。 如果您不熟悉&#xff08;听起来有些奇怪&#xff09;&#xff0c;则CAPTCHA是确保…

ContentProvider与ContentResolver使用

例如以下内容为从网络转载&#xff1a;使用ContentProvider共享数据&#xff1a;当应用继承ContentProvider类&#xff0c;并重写该类用于提供数据和存储数据的方法&#xff0c;就能够向其它应用共享其数据。虽然使用其它方法也能够对外共享数据&#xff0c;但数据訪问方式会因…

cshtml中引用css_ASP.NET CoreMVC 中的控制器

Controller in ASP.NET Core MVC在本节中&#xff0c;我们将讨论 Controller 是什么以及它在 ASP.NET Core MVC 中的作用。Fiddler需要大家提前装一个工具&#xff0c;https://www.telerik.com/fiddlerFiddler 是一个 http 协议调试代理工具&#xff0c;它能够记录并检查所有你…

小学阅读方法六种_小学生掌握了这些语文答题方法,轻松应对阅读理解,不再是难事...

家长们都知道&#xff0c;孩子们在学习数学的时候&#xff0c;重要的就是数学的一些公式&#xff0c;只要把数学公式记牢&#xff0c;做很多题的时候灵活运用&#xff0c;就可以解答。今天我们来看看&#xff0c;语文方面也有一些答题公式&#xff0c;当孩子们完全掌握了这些公…

hdu--4028--dp

这个dp我没做出来啊...其实不难..主要题意没理解好 fuck. 给你1-N这N个数 一共2^N-1个子集 每个子集的LCM值>M的情况数有多少种 我也是醉了 这么个题目 给我套他那个题面 硬是没看懂 他在问什么 还是 英语太渣了 然后就是个 状态转移方程的考虑了 map<LL,LL>dp[size]…

敏捷中gwt含义_在您的GWT应用程序中添加JSON功能

敏捷中gwt含义JSON简介 在Web应用程序上工作时&#xff0c;总是会出现客户端-服务器数据交换的问题。 在此问题上有多种方法&#xff0c;其中许多使用XML进行交换。 执行此任务的一种不太知名的格式是JSON。 JSON&#xff08;JavaScript对象表示法&#xff09;是一种轻量级的数…