java 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中。 生命周期如下图所示:

翻译

在第一阶段,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:让我们开始创建一个新的Dynamic Web Project:

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

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

图3:配置项目:

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

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

图5:项目目录结构:

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

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

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

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

图8:添加了NewRankFile.jsp:

图9:设置JSP模板:

单击上方的完成将创建新文件。 现在,在清单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>

右键单击并选择Run As运行项目。

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

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

图11:选择服务器:

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

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

4.指令

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

句法

<%@ directive attribute="value" %>

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

种类

图13:指令标记的类型:

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:创建示例应用程序:

图15:创建exampleCalculation.jsp:

清单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次迭代和网站更新日期:

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

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

清单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

清单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

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

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

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

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:

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

在这里,将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:

在这里,属性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

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

清单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所示 :

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:

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

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

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

java jsp学习指南

java jsp学习指南_JSP教程–最终指南相关推荐

  1. JSP教程–最终指南

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

  2. 用于单元测试的JUnit教程–最终指南(PDF下载)

    编者注: 我们在Java Code Geeks上提供了许多JUnit教程,例如JUnit入门示例 , 使用断言和注释的 JUnit 示例 , JUnit注释示例等. 但是,为了方便读者,我们希望将所有 ...

  3. Amazon Elastic Beanstalk教程–最终指南(PDF下载)

    编者注: AWS Elastic Beanstalk是Amazon Web Services提供的一项编排服务,用于部署基础架构,该基础架构协调了各种AWS服务,包括EC2,S3,简单通知服务(SNS ...

  4. Spring Batch教程–最终指南

    这是Spring批处理教程,它是Spring框架的一部分. Spring Batch提供了可重用的功能,这些功能对于处理大量记录至关重要,包括日志记录/跟踪,事务管理,作业处理统计信息,作业重新启动, ...

  5. java jsp 自定义标签_JSP自定义标签

    在本章中,我们将讨论JSP中的自定义标签.自定义标签是用户定义的JSP语言元素.当包含自定义标签的JSP页面被转换成一个servlet时,标签被转换为一个名为标签处理程序的对象的操作. 然后,Web容 ...

  6. JAVA/JSP学习系列之Resin+Apache安装

    一.前言 对于初学者来说,要执行JSP和Servlet,Tomcat是一个很不错的选择.你也可以用Resin,这两个产品都是可以不花一分钱的. Resin对Xml的支持是很好的. 二.下载,安装 下载 ...

  7. java jsp网页新闻_JSP新闻显示

    MYSQL数据库创建新闻表,用户登陆时使用SERVLET获取用户名,效验通过后直接跳转新闻列表页面,JSP使用EL显示新闻列表 1.首先创建数据库及用户.新闻表 CREATE DATABASE /*! ...

  8. java jsp网页计算器_JSP实现计算器功能(网页版)

    jsp实现网页计算器代码如下:只有两个jsp页面 myCal.jsp如下: String path = request.getContextPath(); String basePath = requ ...

  9. java jsp 特殊标签_JSP复习(四):JSTL标记

    JSTL优势:在于EL和标准动作无法达到目的,又不使用脚本代码.(JSTL 1.1不是JSP2.0规范的一部分,TOMCAT高版本已经自带了JSTL的JAR包) 使用JSTL需要使用指令,引入JSTL ...

最新文章

  1. 超市购物打印小票的简单程序 记录下来
  2. 管理“95后”,切记这3点
  3. RHEL7恢复root密码
  4. 你真的了解javascript吗?(一)
  5. 如何在 JS 代码中消灭 for 循环
  6. keil mdk5安装
  7. Mining Precision Interface From Query Logs -- 学习笔记(一)
  8. Java方法中的参数太多,第1部分:自定义类型
  9. js,jq.事件代理(事件委托)复习。
  10. 删除顺序表中指定范围的元素
  11. 支付宝双接口ILLEGAL_EXTERFACE错误问题
  12. 学科实践活动感悟50字_“五育并举”的一次生动实践——洪雅实验中学研学活动感悟...
  13. 今天提前回去吧,整理一下,为下周做好准备。
  14. 京东把 Elasticsearch 到底用的有多牛?日均5亿订单查询完美解决!
  15. 世嘉MD游戏开发【十】:精灵动画,Sprite Animation
  16. 《弃子长安》第十六章 道阳心经
  17. drawio 二次开发
  18. php 全等 性能,在PHP中,相等(==)和全等(===)的含义是一样的。
  19. 关于我很想吐槽公司的策划同学这件事
  20. oracle查询半小时之内的记录

热门文章

  1. Loj2687,jzoj3320-文本编辑器【线头dp】
  2. CF559C-Gerald and Giant Chess【计数类dp】
  3. 【线段树】FREQUENT - Frequent values(luogu-SP1684 / poj 3368)
  4. 三年半Java后端面试经历
  5. JavaFX图表(三)之折线图
  6. SpringMVC表单验证器的使用
  7. Spring import配置文件使用占位符
  8. 44个Java代码性能优化总结
  9. java8 hash算法
  10. 数组:完成等差等比数列,及其他数列