JavaWeb学习—-JSP脚本成分、指令成分、动作成分

【声明】 

迎接转发,但请保留小说原来出处→_→ 

生命壹号:http://www.cnblogs.com/smyhvae/

小说来源:http://www.cnblogs.com/smyhvae/p/4048033.html

 

【正文】

咱俩在上一篇小说中读书到了汤姆cat的施用和工程文件安插,并理解了jsp文件是如何公布到服务器上并最终显示出来:JavaWeb学习(一)—-JSP简介及入门(含汤姆cat的利用)

假诺在本文中有不知情的地点,请先想起上一篇小说。

现行反革命来学学一下JSP的为主语法知识。

① 、JSP脚本成分         
                                                                
                                                                     
  

  • 1、声明(declaration)
  • 2、表达式(express)
  • 3、脚本(Scriplets)

“注明”用的少,一般是用“表达式”和“脚本”。
1、声明(declaration):用于在JSP
中宣称合法的变量和方法

语法:

<%! 代码内容 %> 

举例:

<%!
    //JSP声明片段: 注意,不建议在JSP页面上定义变量或方法,只是不建议定义
    int i = 10;
    String name = "smyhvae";
    public void printName(){
        System.out.println(name);
    }

%>

2、表达式(expression):计算该表明式,将其结果转换到字符串插入到输出中

语法:

<%= 表达式 %> 

举例:

Current time: <%= new java.util.Date() %> 

运作后,网页突显效果如下:

图片 1

3、脚本(Scriplets):位于<%和%>之间的代码,它是合法的Java代码

语法:

<% 程序代码,一行或多行 %> 

举例:

<%
 for (int i=0;i<10,i++) {
… …
}
•%> 

 

**贰 、JSP指令成分                     
                                                                       
                                                     **

  • 1、page 指令
  • 2、include 指令
  • 3、taglib 指令

1、page 指令:page
指令指明与JSP容器的关系格局 

page 指令里的常用属性如下:

<%@ page

language=“Java”

import=“importList”    
导入java类库(唯一能够重复使用的性质,其余品质最四只好使用贰遍)

contentType=“contentTyepInfo”  
内容的连串

session=“true|false”

isThreadSafe=“true|false”    是或不是线程安全,暗中同意为true

info=“infoText”

errorPage=“errorPageUrl”    
内定错误页面:假使发生特别,则会跳到这一个颠倒是非页面

isErrorPage=“true|false”    
钦赐当前以此页面是还是不是为不当页面。倘若别的的页面产生错误,就会调到那里来。

%>

注意:只有import属性可以重复使用,借使重复使用,则必须出以往命令的率先行。

新建的jsp文件中,第二句话就用到了page命令:

图片 2

2、include指令:

include指令是在JSP页面被转移成Servlet以前将点名的文件包涵进来。那种特点允许你创建可采取的导航栏、联系人音讯部分、页面计数等。(再也利用的领会:比如说,恐怕有多页面都亟需运用某些标题页面,就能够把那个公共的标题页面使用include指令包涵进来,然后在别的的页面中央直机关接导入标题页面就行了)

格式

<%@include file="fileURL"%> 

过程:在JSP程序的更换时代先把file属性设定的文书蕴含进来,然后开首实践转换及编写翻译的工作。

举例

新建三个title.jsp文件:(红框部分是自笔者添加的代码)

图片 3

接轨新建1个content.jsp文件:(红框部分是自己添加的代码)

图片 4

下边包车型客车主旨代码是第⑦行:导入了title.jsp那一个标题文件。运行后,效果如下:

图片 5

注意:include只能是静态包涵,只好分包静态的财富,编写翻译后形成叁个文本。其实,title.jsp和content.jsp合起来只形成2个.java文件,最终编写翻译为四个.class文件。如下图所示:

图片 6

3、taglib 指令:

用来导入标签库,至于标签库的定义,后边将会讲到,暂时略过。

 

**③ 、JSP动作元素 
                                                                       
                                                                       
 **

最主要涵盖以下一些:

  • <jsp: include>
  • <jsp: param>/<jsp: params>
  • <jsp: forward>
  • <jsp: useBean>
  • <jsp: setProperty>和<jsp:getProperty>

1、<jsp: include>:在用户请求时饱含文件(动态包括)

进度:包涵和被含有的文本分别编写翻译,当用户请求页面时,才动态地蕴藏其余文件

举例:

新建include.jsp文件,作为被含有的始末:(红框部分是本人添加的代码)

图片 7

新建index.jsp文件,作为主界面:(红框部分是本身添加的代码)

图片 8

上边第22行中, flush=”true”表示页面能够实时刷新。

运作后,效果如下:

图片 9

Include指令和Include动作的相比:

  • 一声令下执行进程相对较快,灵活性较差(只编写翻译一个文书,可是一旦有八个文本爆发变化,三个公文都要双重编写翻译)
  • 动作执行进程相对较慢,灵活性较高

在选取时,假如是静态页面,则接纳Include指令;假设是动态页面,则运用Include动作。

2、<jsp: param>/<jsp: params> 传递参数

该动作成分不能够独立行使,能够协作include标签使用。今后来看一下页面是怎样给被含有的页面传递参数的。

举例:

在地方的index.jsp代码中更是助长:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     
11     <h1>包含页面</h1>
12     <jsp:include page="include.jsp" flush="true">
13         <jsp:param value="smyhvae" name="name"/>
14     </jsp:include>
15 </body>
16 </html>

第二3行是进一步助长的,意思是往其余的页面传递参数name。在那之中键为name,值为smyhvae。

紧接着在上边包车型客车include.jsp代码中国和越南来越足够:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <%-- 注释 --%>
11     <%
12         out.println("我是被包含的内容");
13     
14         //request表示请求对象
15         String name = request.getParameter("name");  //获取index页面中name里面的值
16         out.println("<br/>"+name);   //<br/>表示在页面中换行
17     %>
18 </body>
19 </html>

1⑤ 、16行是更进一步丰裕的。表示收获index.jsp页面中传递过来的参数name。

运转后,效果如下:

图片 10

3、<jsp: forward>     转载用户请求

效能:服务器端的跳转(转载带请求的多寡,UEscortL地址不变)

比方:工程文件结构如下:

图片 11

其间,index.jsp负责发送数据,receive.jsp负责转载数量,forward.jsp负责接收数据。

index.jsp代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>主页面</title>
 8 </head>
 9 <body>
10 
11     <h1>发送请求到页面receive.jsp,让receive.jsp负责转发给forward.jsp</h1>
12     <form action="receive.jsp">
13         <input type="text" name="email"/> 
14         <input type="submit" value="提交"/>
15     </form>
16 </body>
17 </html>

14行的submit表示提交表单。
12行的action表示动作,意思是说,要将以此表单提交给receive.jsp页面。

receive.jsp代码如下:(着力代码是第⑧行,表示转发给forward.jsp页面

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>我负责接收index.jsp的数据,并转发给forward.index</title>
 8 </head>
 9 <body>
10     <jsp:forward page="forward.jsp"></jsp:forward>
11 </body>
12 </html>

forward.jsp​代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>我是forward.jsp,将数据转发给我</title>
 8 </head>
 9 <body>
10     <h2>我是forward.jsp,最终将数据转发给我</h2>
11     <%
12         String email = request.getParameter("email");
13         out.println(email);
14     %>
15 </body>
16 </html>

运维后,效果如下:

图片 12

咱们在下面的输入框中输入文本,点击“提交”按钮,跳到如下界面:(注意看url)

图片 13

4、<jsp: useBean>  
创立三个Bean实例并点名它的名字和成效范围

JavaBean:简单说,它就是贰个Java类,这几个类能够重新鸿基土地资金财产动用。

它必须依据以下规定:

  • 是3个公有类。
  • 怀有二个国有的不带参数构造方法。
  • 每种属性必须定义一组getXXX()和setXXX()方法,
    以便读取和存款和储蓄其属性值。

顺应上述规定的JavaBean,将装有:事件处理、自省体制、永续储存等特点。

5、<jsp: setProperty
···/>和<jsp: getProperty ···/>

  • <jsp: setProperty>:设置Bean的属性值
  • <jsp: getProperty>:获取Bean的属性值,用于呈未来页面中

比喻:新建Test03工程。工程结构如下:(此间将讲到怎么着在jsp文件中拿走java文件中类的属性值

图片 14

新建Java文件:创立三个Person类,放入多个参数

 1 package com.vae.bean;
 2 
 3 public class Person {
 4     private String name;
 5     private int age;
 6     
 7 
 8     public void setName(String name) {
 9         this.name = name;
10     }    
11     public void setAge(int age) {
12         this.age = age;
13     }
14     
15     public String getName() {
16         return name;
17     }
18     public int getAge() {
19         return age;
20     }
21 
22     @Override
23     public String toString() {
24         return "Person [name=" + name + ", age=" + age + "]";
25     }
26     
27     
28     
29 }

新建index.jsp文件:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Insert title here</title>
 8 </head>
 9 <body>
10     <h2>方式一:useBean动作元素(不推荐)</h2>
11     <%--创建对象 调用默认的构造方法,要求类必须有默认的构造方法--%>
12     <jsp:useBean id="person" class="com.vae.bean.Person">
13     </jsp:useBean>
14     <%--设置 对象的属性值--%>
15     <jsp:setProperty property="name" name="person" value="生命壹号" />
16     <jsp:setProperty property="age" name="person" value="22" />
17     <%--获取对象的属性值 --%>
18     <jsp:getProperty property="name" name="person" />
19     <jsp:getProperty property="age" name="person" />
20 
21     <h2>方式二:采用片段的方式,即插入Java代码(推荐使用)</h2>
22     <%
23         com.vae.bean.Person p = new com.vae.bean.Person();
24         p.setName("生命贰号");
25         p.setAge(22);
26         p.getName();
27         p.getAge();
28     %>
29 </body>
30 </html>

地点的章程一便是大家所需求举的例子。

12行:id指的是实例化的目的,class就是Java类。这一行一定于 Person person
= new Person();

15行:name是指标,property是性质,value是性质的值。

格局一约等于在jsp文件中开创3个类,只可是是以标签的样式,然后一发通过getProperty得到类中的属性值(1⑧ 、19行)。此办法不是很常用,我们得以应用方法二:片段的点子,即插入Java代码来促成(21至28行)。

运作效果如下:

图片 15

 

有关JSP的愈来愈深造,将在未来讲到。

 

相关文章