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. Java----多线程知识点归纳(概念)

    一.线程与进程的区别: 多个进程的内部数据和状态都是完全独立的,而多线程是共享一块内存空间和一组系统资源,有可能互相影响. ?线程本身的数据通常只有寄存器数据,以及一个 程序执行时使用的堆栈,所以线程 ...

  2. this详解:JAVASCRIPT中的this到底是谁?

    语法 this 全局对象 在全局执行上下文(函数之外),this引用的是全局对象. console.log(this.document === document); // true // In web ...

  3. CPU与外设传送数据方式

    7.2 CPU与外设之间数据传送的方式 在微型计算机系统中,CPU与外设之间的数据传送方式主要有程序传送方式.中断传送方式和直接存储器存取(DMA)传送方式,分别介绍如下.     7.2.1 程序传 ...

  4. Ajax 的同步与异步

    1.Ajax的工作原理如图: 2.同步 XMLHttpRequest 对象用于和服务器交换数据. XMLHttpRequest 对象如果要用于 AJAX 的话,其 open() 方法的 async 参 ...

  5. notepad++使用心得

    最近和网友谈论软件编译器的时候,很多人都推荐使用notepad++这款软件,于是怀着一份好奇心安装了这款软件耍了耍,感觉确实不错.特将网友的分享以及自己的心得总结如下: 1)首先notepad++支持 ...

  6. 【Winform 控件浅谈 】 之 WebBrowser

    前言 鄙人才疏学浅,如果说错了,还请各位不吝赐教 1.什么是 WebBrowser 下面是已有的轮子,我想说它们是专业的 http://baike.baidu.com/view/2981935.htm ...

  7. 应用mysql(Linux中安装)

    当前 mysql 官网的安装教程,指明可以使用 yum 方式. 若在Ubuntu中安装,参考“Linux(Ubuntu)下MySQL的安装与配置”. MySQL YUM Repository MySQ ...

  8. WPF感悟(1)

    原文地址:http://liutiemeng.blog.51cto.com/120361/91632 1.UI层与逻辑层要尽可能地剥离(解耦). 2.Routed Event和Command比Even ...

  9. BZOJ 1046 上升序列

    Description 对于一个给定的S={a1,a2,a3,…,an},若有P={ax1,ax2,ax3,…,axm},满足(x1 < x2 < … < xm)且( ax1 < ...

  10. Important Programming Concepts (Even on Embedded Systems) Part V: State Machines

    Earlier articles in this series: Part I: Idempotence Part II: Immutability Part III: Volatility Part ...