tomcat环境搭建一文中为大家详细的介绍了第一个JSP的程序——Hello World,大家都应该顺利的完成了吧,以此为一个开端,希望大家在学习java EE的路上乘风破浪,不断进步。今天,为大家介绍JSP基本语法。想要快速的学会一门语言,掌握其语法非常关键。这是根本。

一方面因为篇幅原因,另一方面我做此文的目的是做一个小的总结,帮助大家理清思路,撸一撸JSP基本语法。因此,在这篇博文上没有小程序的例子。其实,JSP的本质就是java,只要你有一定的java基础,JSP脚本段的语法与java一模一样。熟记本文之后,相信你写些JSP的小程序会很轻松。希望大家,能在看完本文之后,多写些小程序。毕竟,编程的能力不是记忆一些理论知识就可以的,而是要多多动手实践。

言归正传,语法是根本。总的来说,JSP基础语法包括:两种注释类型、三个脚本元素、三个指令元素、八个动作指令。

JSP页面的组成

JSP页面包含JSP元素和Template data两类。Template data是指JSP引擎不处理的部分,也就是<%%>以外的部分,例如代码中的HTML标签等,这些数据会直接传送到客户端的浏览器。

JSP元素则是值由JSP引擎直接处理的部分,这一部分必须符合JSP语法。JSP标签是大小写敏感的(HTML标签不区分大小写),脚本语法和指令语法则使用了传统的语法。

两种注释类型

1.html注释

<!-comment[<%=expression%>]-> //[]为可选 

eg:

<!-This file dispalys <%=user%> login sreen> 

2.jsp注释

<%--这是一个jsp单行注释--%>
<%/*这是一个jsp多行注释*/%>

三个脚本元素

1.申明:整个页面的成员变量或方法

<%! int a=0;%> 

2.表达式

<%=expression%> 

"<%"和"="之间不要有空格,表达式必须能求值。

3.脚本段:java程序段

<% code fragment%> 

JSP页面可以在<%%>之间插入java程序段。一个JSP页面可以有许多程序段,这些程序段将被JSP引擎按顺序执行。

注意:<%! %>内的变量和方法是一个类内的变量和方法也就是页面的成员变量和成员方法。声明在<%%>内的变量是一个方法的变量也就是局部变量。这个地方我们不太好理解,可以查看Tomcat编译成带名称中有“_jsp”的.java的文件,也就是servlet。我们可以查看JSP转译成的servelt,其路径如下:

apache-tomcat-7.0.59\work\Catalina\localhost\yourwebapp\org\apache\jsp

我们可以看到一个叫_jspService的方法,所有JSP脚本段都在这个方法里。

为了区别他们:请看如下的计数器小程序counter.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head></head>
<body>
<%!int count = 0;
synchronized void setCount() {
count++;
};
%>
<h2>
欢迎阅读本文
<h2>
<br> 本文阅读次数:
<% setCount();
out.println(count);
%>
<br>
i=0,计算i++=
<%
int i = 0;
out.println(i++);
%> </body>
</html>

局部变量当方法调用完,就会在内存中被销毁,所以i每次都为0,0++还是0。而count是页面的成员变量,每访问一次这个页面,count就会+1,直到JSP引擎关闭。用synchronized关键词修饰原因是:当多个用户同时访问这个页面时,线程是安全的。

三个指令元素

1.page指令,仅仅import可以多个

eg:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="com.kl.bean.*" %>

contentType 属性指定页面响应的MIME类型和字符编码

pageEncoding属性用于指定JSP页面字符编码格式。

我的建议:都设置为UTF-8

2.include指令:在编译阶段就处理所需要的文件

<%@ include file="relativeURL"%> 

3.taglib,声明页面的自定义标签

<%@ taglib uri="http://www.jspcentral.com/tags" prefix="public"%> 

八个动作

1.内部跳转(请求转发):<jsp:forward >

从一个jsp文件向另一个jsp文件传递一个包含用户请求的request对象。标签后的jsp脚本不会执行。

该语句实现页面跳转,并可携带相关参数,浏览器地址栏数据不改变,不会显示参数信息。

重定向:重定向行为是做了两次请求,及产生了两个request对象,重定向会导致第一次request对象信息丢失。

请求转发:转发做了一次请求, 浏览器的地址栏一直是第一次请求的地址。转发是服务器内部request/response控制权的移交。

eg: 含param子标记

<jsp:forward page="loginResult.jsp">
<jsp:param name="username" value="<%=user%>"/>
<jsp:param name="password" value="<%=pwd%>"/>
</jsp:forward>

不含param子标记

<jsp:forward page="declare.jsp"/> 

2.包含页面:<jsp:include>

与<%@ include%>不同,在jsp页面运行时动态加入。

<jsp:include page="scripts/login.jsp">
<jsp:param name-"username" value="tom"/>
</jsp:include>

->javaBean

3.创建Bean:<jsp:useBean>

属性:

id:javaBean是一个类,不同实例用id区分

class:javaBean的类名。

scope:默认page,以下是取值的详细说明

  • page:创建Bean的jsp以及此文件中的所有静态包含文件(<%@ include %>)。

  • request:同一个请求,直到客户端发起下一个请求为止。
  • session:整个会话,近似理解为关闭浏览器为止。
  • application:整个application。服务器一开始执行服务到服务器关闭为止。

eg:

<jsp:useBean id="checking" scope="session" class="bank.checking" >
<jsp:setProperty name="checking" property="balance" value="0.0"/>
</jsp:useBean>

4.设置Bean属性:<jsp:setProperty>

属性:

name: <jsp:useBean>标签中的id属性

property:Bean实例的属性。

value: Bean实例属性的值。

param:表单参数

语法:

1)将bean属性的值设置为一个字符串。

<jsp:setProperty name="bean的名字" property="bean的属性" value=字符串/> 

2)通过表单的参数的值来设置bean的相应属性的值,表单中的属性和javaBean的属性应该同名。

<jsp:setProperty name="bean的名字" property="*" />
<jsp:setProperty name="bean的名字" property="属性名" param=“参数名” />

注意表单中文参数乱码

post方式

request.setCharacterEncoding("utf-8");
response.setCharacterEncoding( "utf-8" );

get方式

String string = request.getParamers("");
String = new String(string.getBytes("ISO8859-1","utf-8"));

5.取得属性<jsp:getProperty>

<jsp:getProperty name="bean的名字" property="bean的属性"/> 

6.定义参数:<jsp:param>

param标记以“名字-值”对的形式为其他标记提供附加信息,不能独体使用。作为<jsp:include>,<jsp:forward >,<jsp:plugin>标记的子标记。

<jsp:param name="名字" value="值"> 

7.使用Applet插件:<jsp:plugin>

8.插件错误提示:<jsp:fallback>

JSP基本语法的更多相关文章

  1. JSP学习——语法(二)

    1:JSP运行原理和九大隐式对象: 每个JSP 页面在第一次被访问时,WEB容器都会把请求交给JSP引擎(即一个Java程序)去处理.JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一 ...

  2. jsp基本语法及运行原理

    一.jsp简介 JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计,它 是由Sun Microsystems公司倡导.许多公司参与一起建立 ...

  3. JavaWeb基础-Jsp基础语法

    jsp基础语法 JSP的组成 静态内容.指令.表达式.小脚本.声明.注释 JSP的生命周期 用户发出index.jsp ,服务端判断是否是第一次请求,若是第一次请求,则tomcat中的JSP引擎中的文 ...

  4. 关于jsp基本语法:第一章节

    今天我学习了关于JSP基本语法的一些知识点. JSP全名是 Java server pages,其根本是一个简化的Servlet设计,实现了在java当中使用HTML标签.JSP是一种动态网页技术,标 ...

  5. JSP基本语法总结【1】(jsp工作原理,脚本元素,指令元素,动作元素)

    时隔半年,回头对jsp复习整理一下,温故而知新. jsp工作原理: jsp服务器管理jsp页面分两个阶段:转换阶段(translation phase)和执行阶段(execution phase). ...

  6. 一、 JSP概述 二、JSP的语法结构 三、JSP内置对象

    一.JSP概述###<1>概念 java服务器页面 可以编写动态页面 其内部是以HTML标签为主,可以在HTML标签嵌套java代码 jsp文件以.jsp为后缀 jsp本质上就是一个Ser ...

  7. Jsp基础语法(由简入杂)

    JSP基础语法 一,JSP简介 Jsp是一个简化的Servlet设计,是在服务器端执行,他实现了再Java中使用HTML标签. Jsp是一种动态网页技术标准也是JAVAEE的标准 二,常见动态网站开发 ...

  8. Jsp的语法和指令

    Jsp的三种注释 前端语言注释:<!-- --> 会被转译,也会被发送,但是不会被浏览器执行 java语言注释: 会被转译,但是不会被servlet执行 Jsp注释:<%--  -- ...

  9. JSP学习(一)JSP基础语法

    JSP基础语法 1.JSP模版元素 JSP页面中的HTML内容称之为JSP模版元素. JSP模版元素定义了网页的基本骨架,即定义了页面的结构和外观. <%@ page language=&quo ...

随机推荐

  1. 扩展欧几里得算法(extended Euclidean algorithm)的一个常犯错误

    int exGcd(int x,int y,int& a,int& b) //ax+by=gcd(x,y) { ; b=; return x; } int res=exGcd(y,x% ...

  2. iOS打包ipa 让别人设备安装你的App

    首先推荐一本书<一步一步学习iOS 5编程(第二版) – PDF 中文版>在一本学习IOS入门很不错的书籍,目前,这是第一本介绍iOS 5.x 和 Xcode 4.3 的中文版书籍,尤其适 ...

  3. java之两个字符串的比较

    compareTo() 的返回值是int, 它是先比较对应字符的大小(ASCII码顺序)1.如果字符串相等返回值02.如果第一个字符和参数的第一个字符不等,结束比较,返回他们之间的差值(ascii码值 ...

  4. php基础知识【函数】(8)xml和变量函数

     一.XML函数 参数类型 data    --string,需要解析的数据集. parser  --resource,一个指向要取得字节索引的 XML 解析器的引用.  1.创建和释放XMl解析器 ...

  5. js touch触屏原理分析

    之前我们做过许多触屏的特效,那么,今天,我们来分析下js的触屏原理.事实上,大家百度一下js touch基本上可以找到这文章“指尖下的js ——多触式web前端开发之一:对于Touch的处理”,我想这 ...

  6. YII框架的部署 通过YII脚手架程序创建应用程序系统

    1,把YII框架里面的framework复制粘贴到nginx目录下 2,创建一个商城系统: 1)修改环境变量 制定php.exe的目录 2)C:\Users\Administrator>cd C ...

  7. unix-环境高级编程-读书笔记与习题解答-第三篇

    第一章 第五节 进程与控制 该小节比较粗略的阐述了unix操作系统中用于进程控制的三个函数,分别为 : fork , exec, waitpid, 其中 exec 有五种变体, 这些变体实现的功能全部 ...

  8. DevExpress::XtraBars::BarEditItem获取EditValue值事件

    //视图设计器中拖动一个barManager,添加一个bar,再添加一个BarEditItem控件,如下代码: private: DevExpress::XtraEditors::Repository ...

  9. operation 多线程

    2.Cocoa Operation 优点:不需要关心线程管理,数据同步的事情.Cocoa Operation 相关的类是 NSOperation ,NSOperationQueue.NSOperati ...

  10. 试玩GitHub

    SVN是可以,但GitHub越来越屌啊... SO...要玩起来.. 参考URL: http://jingyan.baidu.com/article/f7ff0bfc7181492e27bb1360. ...