码迷,mamicode.com
首页 > Web开发 > 详细

jsp

时间:2019-06-14 22:01:03      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:容器   insert   阶段   rem   封装   table   cells   family   html   

WEB 项目开发中JSP 占据着举足轻重的地位,虽然其使用很简单,但是非常的重要。本节课开始学习JSP。

 

JSP 学习

 

问题:

在学习了Servlet 之后,使用Servlet 进行页面的展现,代码书写过于麻烦。极大的影响了开发的效率,那么有没有一种方式可以让我们像以前写网页一样来进行网页的编程工作呢?

 

解决:

使用JSP 技术

 

概念:

JSP 全名为Java Server Pages,中文名叫 java 服务器页面,其根本是一个简化的Servlet 设计,它 [1] 是由Sun Microsystems 公司倡导、许多公司参与一起建立的一种动态网页技术标准。

 

特点:

本质上还是Servlet

跨平台,一次编写处处运行组件跨平台

健壮性和安全性

 

Jsp 的访问原理:

浏览器发起请求,请求 JSP,请求被 Tomcat 服务器接收,执行JspServlet 将请求的 JSP 文件转义成为对应的 java 文件( 也是Servlet),(也就是说jsp可以看成servelt对象)然后执行转义好的java 文件。

 

Jsp 的语法和指令:

JSP 的page 指令

JSP 的taglib 指令

Jsp 的局部代码块

Jsp 的全局代码块

Jsp 的注释

Jsp 的静态引入(JSP 的include 指令)

Jsp 的动态引入

页面转发(forword 标签)

Jsp 的内置对象: PageContext 对象Request 对象

Session 对象Application 对象Response 对象Out 对象

Page 对象

Exception 对象

Config 对象使用

 

 

 

MVC

M->MODEL->DATABASE

C->Control->Servlet

------------------

V->VIEW->JSP->(HTML/VUE)

 

JSP 负责页面展现,视图的渲染

Servlet 负责业务逻辑处理。

 

JSP 处理

 

以下步骤表明了 Web 服务器是如何使用JSP来创建网页的:

 

1就像其他普通的网页一样,您的浏览器发送一个 HTTP 请求给服务器。

 

2Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎。通过使用 URL或者 .jsp 文件来完成。

 

3JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为 Servlet。这种转化只是简单地将所有模板文本改用 println() 语句,并且将所有的 JSP 元素转化成 Java 代码。

 

4JSP 引擎将 Servlet 编译成可执行类,并且将原始请求传递给 Servlet 引擎。

 

5Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类。在执行过程中,Servlet 产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器。

 

6Web 服务器以静态 HTML 网页的形式将 HTTP response 返回到您的浏览器中。

 

7最终,Web 浏览器处理 HTTP response 中动态产生的HTML网页,就好像在处理静态网页一样。

 

总结:

一般情况下,JSP 引擎会检查 JSP 文件对应的 Servlet 是否已经存在,并且检查 JSP 文件的修改日期是否早于 Servlet。如果 JSP 文件的修改日期早于对应的 Servlet,那么容器就可以确定 JSP 文件没有被修改过并且 Servlet 有效。这使得整个流程与其他脚本语言(比如 PHP)相比要高效快捷一些。

 

总的来说,JSP 网页就是用另一种方式来编写 Servlet除了解释阶段外,JSP 网页几乎可以被当成一个普通的 Servlet 来对待。

JSP 语法

脚本程序可以包含任意量的Java语句、变量、方法或表达式,只要它们在脚本语言中是有效的。

 

脚本程序的语法格式:

 

<% 代码片段 %>

 

 

或者,您也可以编写与其等价的XML语句,就像下面这样:

 

<jsp:scriptlet>

   代码片段

</jsp:scriptlet>

 

 

任何文本、HTML标签、JSP元素必须写在脚本程序的外面。

 

第一个JSP示例:

 

<html>

<head><title>Hello World</title></head>

<body>

Hello World!<br/>

<%

out.println("Your IP address is " + request.getRemoteAddr());

%>

</body>

</html>

 

 

 

中文编码问题

如果我们要在页面正常显示中文,我们需要在 JSP 文件头部添加以下代码:<>

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

 

 

接下来我们将以上程序修改为:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>sxt教程</title>

</head>

<body>

Hello World!<br/>

<%

out.println("你的 IP 地址 " + request.getRemoteAddr());

%>

</body>

</html>

 

 

这样中文就可以正常显示了。

 

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
           <!--jsp相当于一个 Servle对象-->
           <!--语法格式:1.<% java代码片段 %>
2. <jsp:scriptlet>
   java代码片段
</jsp:scriptlet>-->
           
           
    <h1>hello</h1>
    <%! int i = 0;String abc= "6666";%>
    <h1>ABC的内容是:<%=abc %></h1>
    
    
        不会生成java代码也不会编译。
    <h1>当前的项目路径名称:<%=request.getContextPath() %></h1>
    <h1>port:<%=request.getServerPort() %></h1>
    
    <%! String userType = "VIP";%>
    
    
    <%
        if(userType.equals("VIP")){
            %>
            
            <h1>欢迎vip用户</h1>
            
            <%
        }else{
            %>
            
            
            <h1>充值会让你更强大</h1>
            
        <% }%>
    
    
    </body>
</html>

 

JSP声明

一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中,您必须先声明这些变量和方法然后才能使用它们。

 

JSP声明的语法格式:

 

<%! declaration; [ declaration; ]+ ... %>

 

 

或者,您也可以编写与其等价的XML语句,就像下面这样:

 

<jsp:declaration>

   代码片段

</jsp:declaration>

 

 

 

程序示例:

 

<%! int i = 0; %>

<%! int a, b, c; %>

<%! Circle a = new Circle(2.0); %>

 

 

JSP表达式

一个JSP表达式中包含的脚本语言表达式,先被转化成String,然后插入到表达式出现的地方。

 

由于表达式的值会被转化成String,所以您可以在一个文本行中使用表达式而不用去管它是否是HTML标签。

 

注意:

表达式元素中可以包含任何符合Java语言规范的表达式,但是不能使用分号来结束表达式。

 

JSP表达式的语法格式:

 

<%= 表达式 %>

 

 

同样,您也可以编写与之等价的XML语句:

 

<jsp:expression>

   表达式

</jsp:expression>

 

 

程序示例:

 

<%@ page language="java" contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<!DOCTYPE html>

<html>

<head>

<meta charset="utf-8">

<title>sxt教程</title>

</head>

<body>

<p>

   今天的日期是: <%= (new java.util.Date()).toLocaleString()%>

</p>

</body>

</html>

 

 

 

 

JSP注释

JSP注释主要有两个作用:为代码作注释以及将某段代码注释掉。

 

JSP注释的语法格式:

<%-- 该部分注释在网页中不会被显示--%>

 

不同情况下使用注释的语法规则:

<%-- 注释 --%> JSP注释,注释内容不会被发送至浏览器甚至不会被编译

<!-- 注释 --> HTML注释,通过浏览器查看网页源代码时可以看见注释内容

 

JSP指令

JSP指令用来设置与整个JSP页面相关的属性。

 

JSP指令语法格式:

 

<%@ directive attribute="value" %>

 

 

这里有三种指令标签:

 

指令 描述

<%@ page ... %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等

<%@ include ... %> 包含其他文件

<%@ taglib ... %> 引入标签库的定义,可以是自定义标签

 

 

JSP行为

JSP行为标签使用XML语法结构来控制servlet引擎。它能够动态插入一个文件,重用JavaBean组件,引导用户去另一个页面,为Java插件产生相关的HTML等等。

 

行为标签只有一种语法格式,它严格遵守XML标准:

 

<jsp:action_name attribute="value" />

 

 

行为标签基本上是一些预先就定义好的函数,下表罗列出了一些可用的JSP行为标签::

 

语法 描述

jsp:include 用于在当前页面中包含静态或动态资源

jsp:useBean 寻找和初始化一个JavaBean组件

jsp:setProperty 设置 JavaBean组件的值

jsp:getProperty 将 JavaBean组件的值插入到 output

jsp:forward 从一个JSP文件向另一个文件传递一个包含用户请求的request对象

jsp:plugin 用于在生成的HTML页面中包含AppletJavaBean对象

jsp:element 动态创建一个XML元素

jsp:attribute 定义动态创建的XML元素的属性

jsp:body 定义动态创建的XML元素的主体

jsp:text 用于封装模板数据

 

 

JSP隐含对象

JSP支持九个自动定义的变量,江湖人称隐含对象。这九个隐含对象的简介见下表:

 

对象 描述

request HttpServletRequest类的实例

response HttpServletResponse类的实例

out PrintWriter类的实例,用于把结果输出至网页上

session HttpSession类的实例

application ServletContext类的实例,与应用上下文有关

config ServletConfig类的实例

pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问

page 类似于Java类中的this关键字

Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象

 

 

控制流语句

JSP提供对Java语言的全面支持。您可以在JSP程序中使用Java API甚至建立Java代码块,包括判断语句和循环语句等等。

 

判断语句

Ifelse块,语法如下:

 

<% if (day == 1 | day == 7) { %>

      <p>今天是周末</p>

<% } else { %>

      <p>今天不是周末</p>

<% } %>

 

 

 

switchcase

ifelse块有很大的不同,它使用out.println(),并且整个都装在脚本程序的标签中,就像下面这样:

 

<%

switch(day) {

case 0:

   out.println("星期天");

   break;

case 1:

   out.println("星期一");

   break;

case 2:

   out.println("星期二");

   break;

case 3:

   out.println("星期三");

   break;

case 4:

   out.println("星期四");

   break;

case 5:

   out.println("星期五");

   break;

default:

   out.println("星期六");

}

%>

 

 

循环语句

JSP程序中可以使用Java的三个基本循环类型:forwhile,和 dowhile

 

让我们来看看for循环的例子,以下输出的不同字体大小:

 

<%for ( fontSize = 1; fontSize <= 3; fontSize++){ %>

   <font color="green" size="<%= fontSize %>">

    sxt教程

   </font><br />

<%}%>

 

 

while 循环

 

<%while ( fontSize <= 3){ %>

   <font color="green" size="<%= fontSize %>">

    Sxt教程

   </font><br />

<%fontSize++;%>

<%}%>

 

 

 

 

 

JSP运算符

JSP支持所有Java逻辑和算术运算符。

 

下表罗列出了JSP常见运算符,优先级从高到底:

 

类别 操作符 结合性

后缀 () [] . (点运算符) 左到右

一元 ++ - - ! ~ 右到左

可乘性 * / % 左到右

可加性 + - 左到右

移位 >> >>> <<   左到右

关系 > >= < <=   左到右

相等/不等 == != 左到右

位与 & 左到右

位异或 ^ 左到右

位或 | 左到右

逻辑与 && 左到右

逻辑或 || 左到右

条件判断 ?: 右到左

赋值 = += -= *= /= %= >>= <<= &= ^= |= 右到左

逗号 , 左到右

 

JSP 字面量

JSP语言定义了以下几个字面量:

 

布尔值(boolean)true false;

整型(int):与 Java 中的一样;

浮点型(float):与 Java 中的一样;

字符串(string):以单引号或双引号开始和结束;

Nullnull

 

jsp

标签:容器   insert   阶段   rem   封装   table   cells   family   html   

原文地址:https://www.cnblogs.com/406070989senlin/p/11025462.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!