提交 b621e386 编写于 作者: W wizardforcel

2019-10-14 17:26:37

上级 9975d272
......@@ -8,7 +8,7 @@
`<% 可执行的 java 代码 %>`
### JSP 到 Scriptlet 的 Servlet 转换 -
### JSP 到 Scriptlet 的 Servlet 转换
正如我在之前的教程中所述,JSP 没有直接执行,它首先被转换为 Servlet,然后 Servlet 执行正常。另外,我在第一段中解释说,从 JSP 到 servlet 的转换,java 代码从 scriptlet 复制到`_jspService()`方法。让我们看看这是怎么回事。
......@@ -71,7 +71,7 @@ out.println("hello");
</html>
```
在上面的示例中,存在许多类型的 JSP 元素,例如表达式,JSP 注释,元素声明等。我们将在即将到来的 JSP 教程中看到它们中的每一个,但是到目前为止,您只能关注 Scriptlet。以下是上例中使用的 scriptlets 语句 -
在上面的示例中,存在许多类型的 JSP 元素,例如表达式,JSP 注释,元素声明等。我们将在即将到来的 JSP 教程中看到它们中的每一个,但是到目前为止,您只能关注 Scriptlet。以下是上例中使用的 scriptlets 语句
```html
<%if(localstring.equals("JSP scriptlet"))
......@@ -91,10 +91,10 @@ out.println("hello");
除了上面两组 scriptlet 之外,上面的例子中还有许多其他的 scriptlet 标签(注意`if-else`控制流逻辑)。要使用 java 的`if-else`控制流语句,我们在上面的示例中使用了 scriptlet。因为这是使用 scriptlet 的主要优点所以让我们借助一个例子让它更清晰 - 你必须知道我们的`If-else`控制语句有多重要。
**使用 scriptlet 显示`if-else`的使用示例 -**
**使用 scriptlet 显示`if-else`的使用示例**
假设有一个变量`num`并且你想在你的网页上显示`"hi"`,如果它大于 5,否则你想要显示一条消息。考虑下面这个场景的代码 -
**如果你想在 java 中为上述情况编写一个代码,那么它看起来像这样 -**
假设有一个变量`num`并且你想在你的网页上显示`"hi"`,如果它大于 5,否则你想要显示一条消息。考虑下面这个场景的代码
**如果你想在 java 中为上述情况编写一个代码,那么它看起来像这样**
[code language =“java”]
```java
......@@ -105,7 +105,7 @@ if (num > 5) {
}
```
**要在 JSP 中编写类似的代码,我们需要使用 JSP scriptlet - 代码就像这样 -**
**要在 JSP 中编写类似的代码,我们需要使用 JSP scriptlet - 代码就像这样**
```html
<! DOCTYPE HTML PUBLIC "-//W3C//DTD HTML4.0 translation //EN">
......
......@@ -13,7 +13,7 @@ JSP 动作允许您执行某些动作。
## 1. `<jsp:include>`动作
**包含页面指令**类似,此动作也用于在另一个文件中插入 JSP 文件。
`include`页面指令类似,此动作也用于在另一个文件中插入 JSP 文件。
**`<jsp:include>` vs `include`指令:**
......@@ -81,15 +81,15 @@ JSP 动作允许您执行某些动作。
此动作对于将参数传递给其他 JSP 动作标签非常有用,例如 JSP `include`和 JSP 转发标签。这样,新的 JSP 页面可以使用请求对象本身访问这些参数。
**&lt; jsp:param&gt;的语法:**
**`<jsp:param>`的语法:**
```html
<jsp: param name="param_name_here" value="value_of_parameter_here" />
```
现在考虑上面的例子 -
现在考虑上面的例子
**first.jsp**
`first.jsp`
```html
<html>
......@@ -107,7 +107,7 @@ JSP 动作允许您执行某些动作。
</html>
```
在上面的例子中,`first.jsp`将三个参数(`data``time``data`)传递给`second.jsp``second.jsp`可以使用下面的代码访问这些参数 -
在上面的例子中,`first.jsp`将三个参数(`data``time``data`)传递给`second.jsp``second.jsp`可以使用下面的代码访问这些参数
```html
Date:<%= request.getParameter("date") %>
......@@ -182,7 +182,7 @@ public class StuBean {
此动作标签用于设置 Bean 的属性,在使用此动作标签时,您可能需要指定 Bean 的唯一名称(它只是`useBean`动作标签的`id`值)。
`<jsp:setProperty>`**语法**
**`<jsp:setProperty>`的语法**
```html
<jsp: useBean id="unique_name_to_identify_bean"  class="package_name.class_name" />
......@@ -207,7 +207,7 @@ public class StuBean {
它用于检索或获取 Bean 属性的值。
`<jsp:getProperty>`**语法**
**`<jsp:getProperty>`的语法**
```html
<jsp: useBean id="unique_name_to_identify_bean"  class="package_name.class_name" />
......
......@@ -27,7 +27,7 @@ property="property_name" />
### `useBean`,`setProperty`和`getProperty`的完整示例
1)我们有一个 bean 类详细信息,我们有三个变量用户名,年龄和密码。为了在 JSP 中使用 bean 类及其属性,我们在`userdetails.jsp`页面中初始化了这样的类 -
1)我们有一个 bean 类详细信息,我们有三个变量用户名,年龄和密码。为了在 JSP 中使用 bean 类及其属性,我们在`userdetails.jsp`页面中初始化了这样的类
```html
<jsp:useBean id="userinfo" class="beginnersbook.com.Details"></jsp:useBean>
......
......@@ -12,7 +12,7 @@
## JSP 表达式标签示例
**例 1:值的表达**
**例 1:值的表达**
这里我们只是在表达式标签内传递值的表达式。
......
......@@ -30,7 +30,7 @@
在这里阅读全文:[`application`隐式对象的例子](https://beginnersbook.com/2013/11/jsp-implicit-object-application-with-examples/ "Application")。
6. `exception`:`exception`隐式对象用于异常处理以显示错误消息。此对象仅适用于将`isErrorPage`设置为`true`的 JSP 页面。
在这里阅读全文:[`exception`隐式对象与示例](https://beginnersbook.com/2013/11/jsp-implicit-object-exception-with-examples/ "Exception")。
7. `page`:`page`隐式对象是对当前`Servlet`实例的引用(转换后的 Servlet,在 JSP 页面的转换阶段生成)。我们可以简单地使用**来代替它**。我没有详细介绍它,因为它很少使用,而且在构建 JSP 应用时不是一个有用的隐式对象。
7. `page`:`page`隐式对象是对当前`Servlet`实例的引用(转换后的 Servlet,在 JSP 页面的转换阶段生成)。我们可以简单地使用`this`来代替它。我没有详细介绍它,因为它很少使用,而且在构建 JSP 应用时不是一个有用的隐式对象。
8. `pageContext`:用于访问页面,请求,应用和会话属性。
在这里阅读全文:[`pageContext`隐式对象与示例](https://beginnersbook.com/2013/11/jsp-implicit-object-pagecontext-with-examples/ "PageContext")。
9. `config`:这是一个 Servlet 配置对象,主要用于访问获取配置信息,如 Servlet 上下文,Servlet 名称,配置参数等。
......
......@@ -18,7 +18,7 @@ int getBufferSize()
int getRemaining()
```
让我们详细看看每个方法 -
让我们详细看看每个方法
1. `void print()`:此方法写入已传递给它的值。对于例如下面的语句将在 jSP 中显示一个句子`Out Implicit Object in jSP - BeginnersBook`到输出屏幕(客户端浏览器)。
......@@ -72,7 +72,7 @@ int getRemaining()
如您所知,`print`语句不会添加新行。我们使用`newLine()`方法在两个`out.print`语句之间添加了一个新行。
4. `void clear()`:它清除输出缓冲区,甚至不让它将缓冲区内容写入客户端。这就是它的名称 -
4. `void clear()`:它清除输出缓冲区,甚至不让它将缓冲区内容写入客户端。这就是它的名称
```html
out.clear();
......
......@@ -86,7 +86,7 @@ out.print("Name: "+username+" Password: "+password);
</html>
```
**上述例子**的快照
**上述例子的快照**
一旦运行上面的 JSP 代码。它会显示以下屏幕,其中包含两个用户名和密码的文本字段。
......
......@@ -18,9 +18,9 @@ boolean isCommitted()
void setStatus(int statuscode)
```
让我们详细了解每种方法 -
让我们详细了解每种方法
1. `void setContentType(String type)` - 此方法通过设置 MIME 类型和字符编码告诉浏览器,响应数据的类型。此方法设置的信息有助于浏览器解释响应。示例 -
1. `void setContentType(String type)` - 此方法通过设置 MIME 类型和字符编码告诉浏览器,响应数据的类型。此方法设置的信息有助于浏览器解释响应。示例
```html
response.setContentType("text/html");
......@@ -60,7 +60,7 @@ void setStatus(int statuscode)
response.addCookie(Cookie Siteinfo);
```
7. `void sendError(int status_code, String message)` - 它用于通过代码和错误消息发送错误响应。例如 -
7. `void sendError(int status_code, String message)` - 它用于通过代码和错误消息发送错误响应。例如
```html
response.sendError(404, "Page not found error");
......
......@@ -2,7 +2,7 @@
> 原文: [https://beginnersbook.com/2013/11/jsp-implicit-object-exception-with-examples/](https://beginnersbook.com/2013/11/jsp-implicit-object-exception-with-examples/)
在本教程中,我们将讨论 JSP 的`exception`隐式对象。它是`java.lang.Throwable`的一个实例,经常用于 JSP 中的异常处理。此对象仅适用于错误页面,这意味着 JSP 页面的`isErrorPage`应为`true`,以便使用`exception`隐式对象。让我们在下面的例子的帮助下理解这一点 -
在本教程中,我们将讨论 JSP 的`exception`隐式对象。它是`java.lang.Throwable`的一个实例,经常用于 JSP 中的异常处理。此对象仅适用于错误页面,这意味着 JSP 页面的`isErrorPage`应为`true`,以便使用`exception`隐式对象。让我们在下面的例子的帮助下理解这一点
### `exception`隐式对象示例
......
......@@ -2,7 +2,7 @@
> 原文: [https://beginnersbook.com/2013/11/jsp-implicit-object-pagecontext-with-examples/](https://beginnersbook.com/2013/11/jsp-implicit-object-pagecontext-with-examples/)
它是`javax.servlet.jsp.PageContext`的一个实例。使用此对象,您可以在以下任何级别找到属性,获取属性,设置属性和删除属性 -
它是`javax.servlet.jsp.PageContext`的一个实例。使用此对象,您可以在以下任何级别找到属性,获取属性,设置属性和删除属性
1. JSP 页面 - 范围:`PAGE_CONTEXT`
2. HTTP 请求 - 范围:`REQUEST_CONTEXT`
......@@ -19,7 +19,7 @@
Object obj = pageContext.getAttribute("BeginnersBook", PageContext.SESSION_CONTEXT);
```
同样,该方法也可用于其他范围 -
同样,该方法也可用于其他范围
```html
Object obj = pageContext.getAttribute("BeginnersBook", PageContext. REQUEST_CONTEXT);
......@@ -113,7 +113,7 @@ out.println("Your Password is: "+userpassword);
![pageContext1](img/348d540e90f7672dc94f476b690d7be2.jpg)
有详细页面链接的页面 -
有详细页面链接的页面
![pageContext2](img/4b84badc5e0bdc088b98a734cce5c676.jpg)
......
......@@ -33,16 +33,16 @@ Current time is: <%= new java.util.Date() %>
上面的 JSP 生成以下输出:`"Hello, Sample JSP code"`
**上述代码**的说明
**上述代码的说明**
1)行`<%-- JSP comment --%>`表示名为 JSP 注释的 JSP 元素,在向 JSP 页面添加注释时可以使用此标签,我们将在后续帖子中详细讨论。
**注意:**JSP 注释必须以标签**`<%--`开头,以` --%>`结尾。**
**注意:**JSP 注释必须以标签`<%--`开头,以`--%>`结尾。
**2)`Head`,`Title`和`Body`标签是 HTML 标签** - 它们是 HTML 标签,经常用于静态网页。无论他们拥有什么内容,都会传递给客户端(Web 浏览器)。
2)`Head``Title``Body`标签是 HTML 标签 - 它们是 HTML 标签,经常用于静态网页。无论他们拥有什么内容,都会传递给客户端(Web 浏览器)。
3)`<%out.print("Hello, Sample JSP code");%>`是一个 JSP 元素,称为 Scriptlet。 Scriptlet 可以包含 Java 代码。 scriptlet 的**语法是:`<%Executable java code>`。由于 Scriptlets 中的代码是 java 语句,因此它们必须以分号(`;`)结尾。`out.print("Hello, Sample JSP code");`是一个 java 语句,它打印`"Hello, Sample JSP code"`
3)`<%out.print("Hello, Sample JSP code");%>`是一个 JSP 元素,称为 Scriptlet。 Scriptlet 可以包含 Java 代码。 scriptlet 的语法是:`<%Executable java code>`。由于 Scriptlets 中的代码是 java 语句,因此它们必须以分号(`;`)结尾。`out.print("Hello, Sample JSP code");`是一个 java 语句,它打印`"Hello, Sample JSP code"`
如上所述,JSP 用于创建动态网页。动态网页通常是静态和网络的混合。动态内容
如上所述,JSP 用于创建动态网页。动态网页通常是静态和动态内容的混合
**静态内容**可以使用基于文本的格式,如 HTML,XML 等,**动态内容**由 JSP 标签使用 HTML 内部的 Java 代码生成。
......@@ -52,13 +52,13 @@ Current time is: <%= new java.util.Date() %>
它们之间的主要区别在于 servlet 在 java 中添加了 HTML 代码,而 JSP 在 HTML 中添加了 Java 代码。还有一些其他值得注意的要点如下:
**Servlets** -
**Servlets**
1. Servlet 是一个支持 HTML 标签的 Java 程序。
2. 通常用于开发企业应用的业务层(复杂计算代码)。
3. Servlet 由 Java 开发人员创建和维护。
**JSP** -
**JSP**
1. JSP 程序也是支持 java 语句的 HTML 代码。更准确地说,JSP 使用 JSP 标签在 java 中嵌入 java。
2. 用于开发企业应用的表示层
......
......@@ -32,7 +32,7 @@ ${1+2+3}
![EL-example1](img/9c9ccd5a38aff4425433926d29b4970c.jpg)
**示例 2:使用表达式语言**获取`param`变量的值
**示例 2:使用表达式语言获取`param`变量的值**
在此示例中,我们提示用户输入名称和卷号。在另一个 JSP 页面上,我们使用 EL 的`param`变量获取输入的详细信息。
......
......@@ -2,13 +2,13 @@
> 原文: [https://beginnersbook.com/2013/11/jsp-exception-handling/](https://beginnersbook.com/2013/11/jsp-exception-handling/)
在通过 JSP 中的**异常处理之前,让我们了解什么是异常以及它与错误的区别。**
在通过 JSP 中的异常处理之前,让我们了解什么是异常以及它与错误的区别。
**异常:**这些只是中断正常执行流程的异常情况。大多数情况下,它们是由于用户输入的错误数据而发生的。必须处理异常才能向用户提供有意义的消息,以便用户能够理解问题并采取适当的措施。
**错误:**这可能是代码或系统相关问题的问题。我们不应该处理错误,因为它们是要修复的。
**处理例外的方法:**
**处理异常的方法:**
我们可以使用以下两种方法处理异常。
......
......@@ -20,16 +20,16 @@ JSP 页面以`.jsp`扩展名保存,这使服务器知道这是一个 JSP 页
![JSP-life-cycle](img/836c79b3dfd672a382ebd75720ea4e3b.jpg)
**让我们更详细地看一下 JSP 的生命周期 -**
**让我们更详细地看一下 JSP 的生命周期**
1)如上所述,只要容器收到来自客户端的请求,它只在`Servlet`类比 JSP 页面更旧时才进行转换。其他它跳过这个阶段(我上面解释的原因)。
2)然后容器 -
2)然后容器
* 编译相应的`Servlet`程序
* 加载相应的`Servlet`
* 实例化`Servlet`
* 调用`jspInit()`方法**来初始化`Servlet`实例(仅当`Servlet`文件的实例未运行或者它比 JSP 文件旧时,JSP 容器才会执行此作业。)
* 调用`jspInit()`方法来初始化`Servlet`实例(仅当`Servlet`文件的实例未运行或者它比 JSP 文件旧时,JSP 容器才会执行此作业。)
```html
public void jspInit() {
......@@ -45,7 +45,7 @@ void _jspService(HttpServletRequest req, HttpServletResponse res) {
}
```
4)调用`jspDestroy()`方法**来销毁`Servlet`类的实例。代码如下所示 -
4)调用`jspDestroy()`方法来销毁`Servlet`类的实例。代码如下所示:
```html
public void jspDestory()
......
......@@ -20,7 +20,7 @@
## 1)`page`指令
有几个属性,与 Page Directives 一起使用,它们是 -
有几个属性,与`page`指令一起使用,它们是:
+ `import`
+ `session`
......@@ -38,7 +38,7 @@
此属性用于导入包。在进行编码时,您可能需要包含多个包。在这种情况下,此`page`指令的属性非常有用,因为它允许您在逗号(`,`)之间用同一位置提及多个包。或者,您可以拥有多个页面元素实例,每个实例都包含不同的包。
**导入属性的语法 -**
**导入属性的语法**
```html
<%@page import="value"%>
......@@ -46,7 +46,7 @@
这里的值是包名。
**导入示例 -** 以下是如何使用`page`指令的`import`属性导入多个包的示例。
**导入示例** 以下是如何使用`page`指令的`import`属性导入多个包的示例。
```html
<%@page import="java.io.*%>
......@@ -69,7 +69,7 @@
<%@ page session="value"%>
```
这里的值是**是`true`或者`false`**
这里的值是`true`或者`false`
**会话示例:**
......@@ -189,7 +189,7 @@
<%@ page buffer="value"%>
```
值为**大小,单位为 KB**`none`
值为**大小(单位为 KB)**`none`
**缓冲区示例:**
......@@ -277,7 +277,7 @@
**`autoFlush`属性示例:**
缓冲区将在满时刷新 -
缓冲区将在满时刷新
```html
<%@ page autoFlush="true"%>
......@@ -309,13 +309,13 @@ value can be true or false.
**`isELIgnored`属性示例:**
JSP 页面中存在的任何表达式都不会被评估 -
JSP 页面中存在的任何表达式都不会被评估
```html
<%@ page isELIgnored="false"%>
```
将评估表达式(`true`是默认值,因此无需指定) -
将评估表达式(`true`是默认值,因此无需指定)
```html
<%@ page isELIgnored="true"%>
......
......@@ -20,7 +20,7 @@
<%@ include file="URL of the file" %>
```
我们必须指定相对 URL -
我们必须指定相对 URL
如果`file`与当前 JSP 页面所在的文件夹相同,那么我们只需提及文件名,否则需要指定文件的相对路径。
......
......@@ -31,7 +31,7 @@ session.setAttribute("ci", city);
</html>
```
上面,我使用[声明标签](https://beginnersbook.com/2013/11/jsp-declaration-tag/)初始化字符串, [scriptlet](https://beginnersbook.com/2013/05/jsp-tutorial-scriptlets/) 用于在[`session`对象](https://beginnersbook.com/2013/11/jsp-implicit-object-session-with-examples/)中设置它们。由于 sciptlet 的使用被忽视了长背,或者你可以使用[`<c:set>` JSTL 标签](https://beginnersbook.com/2013/11/jstl-cset-core-tag/)做同样的事 - 代码就像这样 -
上面,我使用[声明标签](https://beginnersbook.com/2013/11/jsp-declaration-tag/)初始化字符串, [scriptlet](https://beginnersbook.com/2013/05/jsp-tutorial-scriptlets/) 用于在[`session`对象](https://beginnersbook.com/2013/11/jsp-implicit-object-session-with-examples/)中设置它们。由于 sciptlet 的使用被忽视了长背,或者你可以使用[`<c:set>` JSTL 标签](https://beginnersbook.com/2013/11/jstl-cset-core-tag/)做同样的事 - 代码就像这样
```html
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
......
+ [](2.md)
+ [Java Server Pages 简介 - JSP 教程](3.md)
+ [Java Server Pages(JSP)生命周期](4.md)
+ [](2.md)
+ [Java 服务器页面简介](3.md)
+ [Java 服务器页面(JSP)生命周期](4.md)
+ [指令](5.md)
+ [JSP 指令 - 页面,包含和 TagLib](6.md)
+ [在 JSP 中`Include`指令](7.md)
+ [JSP include 指令带参数示例](8.md)
+ [小脚本](9.md)
+ [JSP 指令 - `page`,`include`和`TagLib`](6.md)
+ [JSP 中的`Include`指令](7.md)
+ [JSP 带参数的`include`指令](8.md)
+ [Scriptlets](9.md)
+ [JSP Scriptlets](10.md)
+ [动作标签](11.md)
+ [JSP 操作 - Java Server Pages](12.md)
+ [JSP 包含动作标签 - JSP Tutorial](13.md)
+ [JSP 包含带参数示例的操](14.md)
+ [JSP 转发动作标签 - JSP Tutorial](15.md)
+ [jsp:useBean,jsp:setProperty 和 jsp:getProperty Action Tags](16.md)
+ [JSP 动作](12.md)
+ [JSP `include`动作标签](13.md)
+ [JSP 带参数的`include`动](14.md)
+ [JSP `forward`动作标签](15.md)
+ [`jsp:useBean`,`jsp:setProperty`和`jsp:getProperty`动作标签](16.md)
+ [表达式](17.md)
+ [JSP Expression Tag - JSP 教程](18.md)
+ [JSP 表达式标签](18.md)
+ [声明](19.md)
+ [JSP 声明标签 - JSP 教程](20.md)
+ [JSP 隐式对象](21.md)
+ [Jsp 隐式对象](22.md)
+ [用例子中的 JSP 中的隐式对象](23.md)
+ [使用示例在 JSP 中`request`隐式对象](24.md)
+ [使用示例在 JSP 中`response`隐式对象](25.md)
+ [JSP 中的 Session 隐式对象及其示例](26.md)
+ [JSP 中的`application`隐式对象及其示例](27.md)
+ [JSP 中的`exception`隐式对象,带有示例](28.md)
+ [pageContext JSP 中的隐式对象,带有示例](29.md)
+ [使用示例在 JSP 中`config`隐式对象](30.md)
+ [JSP 中的`out`隐式对象](23.md)
+ [JSP 中的`request`隐式对象](24.md)
+ [JSP 中的`response`隐式对象](25.md)
+ [JSP 中的`Session`隐式对象](26.md)
+ [JSP 中的`application`隐式对象](27.md)
+ [JSP 中的`exception`隐式对象](28.md)
+ [JSP 中的`pageContext`隐式对象](29.md)
+ [JSP 中的`config`隐式对象](30.md)
+ [JSP 中的表达式语言(EL)](31.md)
+ [JSP 表达式语言(EL) - JSP 教程](32.md)
+ [JSP 表达式语言(EL)](32.md)
+ [异常处理](33.md)
+ [JSP 中的异常处理](34.md)
+ [自定义标签](35.md)
+ [带有示例的 JSP Custom 标签 - JSP Tutorial](36.md)
+ [如何在 JSP 教程中访问 Custom 标签的主体](37.md)
+ [JSP 自定义标签](36.md)
+ [如何访问自定义标签的主体](37.md)
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册