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. C# string转int

    1,int转成string用toString 或者Convert.toString()如下 例如:int varInt = 1; string varString = Convert.ToString ...

  2. Cocos Studio1.5.0.1开发学习笔记(一)

    听说Cocos Studio很久了,主要是因为骨骼动画.目前看来Cocos2d-x播放动画的方式只有2种: 第一种:是播放序列帧动画,即将动画的每一帧都加载进缓存里,需要播放时再使用Animation ...

  3. SGU 200.Cracking RSA(高斯消元)

    时间限制:0.25s 空间限制:4M 题意: 给出了m(<100)个数,这m个数的质因子都是前t(<100)个质数构成的. 问有多少个这m个数的子集,使得他们的乘积是完全平方数. Solu ...

  4. C++最后课程项目总结

    第一次独立完成的C++小项目,40小时 + 5小时Update + 8小时Linux移植. 过程: 过程非常认真,一个星期主要就是忙这个,为了完成某个部分,有时饭都推迟吃,连续对着电脑10几个小时很累 ...

  5. linux如何开机以命令行形式启动?

    在管理员权限下,修改/etc/inittab文件即可.把id:5:initdefault:改为id:3:initdefault:就可以了. 如下图所示: 图1: . 图2:

  6. C# ToString常用技巧总结

    ToString是在开发中最常用的操作,其作用是将其它类型以字符串类型表示.例如: int i=2;i.ToString() //”2″Object o = new Object();o.ToStri ...

  7. 浅谈Chrome V8引擎中的垃圾回收机制

    垃圾回收器 JavaScript的垃圾回收器 JavaScript使用垃圾回收机制来自动管理内存.垃圾回收是一把双刃剑,其好处是可以大幅简化程序的内存管理代码,降低程序员的负担,减少因 长时间运转而带 ...

  8. BZOJ 1038 瞭望塔

    Description 致力于建设全国示范和谐小村庄的H村村长dadzhi,决定在村中建立一个瞭望塔,以此加强村中的治安.我们将H村抽象为一维的轮廓.如下图所示 我们可以用一条山的上方轮廓折线(x1, ...

  9. Unity 网络斗地主 牌的一些算法

    Unity 网络斗地主  牌的一些算法 在这儿说一下,我的项目是用svn的方式,上传在https://v2.svnspot.com/18666451713.doudizhu这个svn上,大家可以下载T ...

  10. RMQ with Shifts

    uva12299:http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_prob ...