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# div布局

    本文讲解使用DIV+CSS布局最基本的内容,读完本文你讲会使用DIV+CSS进行简单的页面布局. 转载请标明:http://www.kwstu.com/ArticleView/divcss_20139 ...

  2. webservice拦截器 查看消息包(soap)

    服务端: 1.获取EndpointImpl对象 2.调用EndpointImpl对象中的方法获取In拦截器 3.调用EndpointImpl对象中的方法获取out拦截器 4.添加自己的In拦截器与Ou ...

  3. dedecms 发布文章时,关键字会自动加内链

    在后台找到:核心->批量维护->文档关键词维护 把关键字和链接网址删掉就可以了,生成更新后前端页面就不会再链接了.>_<.

  4. Tomcat环境变量的配置

    Tomcat web服务器 支持全部JSP以及Servlet规范 主要作用 是提供了一个可以让Jsp和Servlet运行的平台 tomcat环境变量设置 CATALINA_HOME : D:\bran ...

  5. Flask jQuery ajax

    http://www.runoob.com/jquery/jquery-ref-ajax.html http://jun1986.iteye.com/blog/1399242 下面是jQuery官方给 ...

  6. Swift-MJ

    1.声明变量 常量 声明变量:var age = 10 声明常量:let age = 10 (不加分号,除非多条语句写在同一行) 二进制前缀:0b(必须小写) 八进制前缀:0o 十六进制前缀:0x 2 ...

  7. objective-c 错题

    //1, NSString *name = [[NSString alloc]initWithString:@"张三"]; NSLog(@"%d",[name ...

  8. jquery的笔记

    1. 基本选择器 基本的  #id      .class     element(元素)     *(全部元素) $("#id")   $(".class") ...

  9. [BZOJ 3747] [POI 2015] Kinoman【线段树】

    Problem Link : BZOJ 3747 题解:ZYF-ZYF 神犇的题解 解题的大致思路是,当区间的右端点向右移动一格时,只有两个区间的左端点对应的答案发生了变化. 从 f[i] + 1 到 ...

  10. h.264直接预测

    直接预测是B帧上一种独有的预测方式,其中直接预测又分为两种模式: 时域直接模式(temporal direct).空域直接模式(spatial direct). 在分析这两种模式之前,有一个前提概念需 ...