JSP基础语法

关于JSP基础语法主要介绍下面5个内容:

  • Jsp简介
  • 常用动态网站开发技术
  • Jsp页面元素构成
  • Jsp的声明周期
  • 阶段项目

1、JSP简介

JSP全名是Java Server Pages,其根本是一个简化的Servlet设计,他实现了在Java当中使用HTML标签。Jsp是一种动态网页技术标准也是JAVAEE的标准。JSP与Servlet一样,是在服务器端执行的。

2、常见动态网站开发技术对比

  • Jsp: Java平台,安全性高,适合开发大型的,企业级别的Web应用程序。
  • Asp.net: .Net平台,简单易学。但是安全性以及跨平台性差。
  • Php: 简单,高效,成本低开发周期短,特别适合中小企业的Web应用开发。(LAMP: Linux+Apache+MySQL+PHP)

3、Jsp页面元素构成

3.1 Jsp指令

  • 1、page指令
    通常位于jsp页面的顶端,同一个页面可以有很多个page指令。

page指令的语法:
%@ page 属性1="属性值" 属性2="属性值1,属性值2"... 属性n="属性值n"%>
下面是最常用的属性

属性描述默认值
language 指定JSP页面使用的脚本语言 Java
import 通过该属性来引用脚本语言中使用到的类文件
contentType 用来指定JSP页面所采用的编码方式 text/html,ISO-8859-1

contentType="text/html; charset=utf-8"

  • 2、include指令(JSP 包含指令)
    将一个外部文件嵌入到当前的JSP文件中,同时解析这个页面 中的JSP语句。这是一种非常常用的组织页面的方式。例子,下面是一个 nav.jsp
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<navclass="navbar navbar-inverse navbar-fixed-top">
...
</nav>

  

可以将该 JSP 文件导入到你想可以显示它的页面中,代码如下:

<%@ include file="nav.jsp" %>

  

这些公共的 .jsp 文件都会放在一个固定的文件夹中。
同样的道理,head 标签中de各类静态资源定义、底部页面版权声明信息也可以抽取到公共文件中,那么对于任意的一个页面,它的结构是固定的:

  

<html>
<head>
<%@ include file="common/head.jsp" %>
</head>
<body>
<%@ include file="common/nav.jsp" %>
<%@ include file="common/footer.jsp" %>
</body>
</html>

  

  • 以上是静态的引入页面,可以动态的引入:使用 jsp:include 动作
    <jsp:include page="common/head.jsp" />
    和包含指令不同的是,jsp:include 在每次请求当前 JSP 文件的时候,才将目标 JSP 文件包含进来(包含指令则是在编译的时候),再看下一个例子:

  

<jsp:includepage="file_name">
<jsp:paramname="parameter_name"value="parameter_value"/>
</jsp:include>

  

我们可以通过 jsp:include ,将某个参数传给目标 JSP 文件。在目标 JSP 文件中,parameter_name 变量就可以像上下文中的变量一样被使用: ${parameter_name}

  • 3、taglib指令
    使用标签库定义新的自定义标签,在JSP页面中启动定制的行为。

3.2 Jsp注释

在JSP中用到的注释一共有三种类型:

  • HTML的注释:
    // 客户端可见(但是需要点击查看源文件)

  • JSP注释:
    <%– jsp注释 –%> // 客户端不可见

  • 可在JSP脚本中使用的脚本注释:
    // 单行注释
    /**/ 多行注释
    何为脚本,在<% %> 中的可被认为是脚本(也是客户端不可见的)

3.3 Jsp脚本

Jsp脚本就是在JSP页面中执行的java代码。
语法:
<% Java代码 %>
例如:

3.4 Jsp声明

Jsp声明就是指在JSP页面中定义变量或者方法。
语法:
<%! Java代码 %>

举例:

<%!
String s ="张三";// 声明了一个字符串变量
int add(int x,int y)// 声明了一个返回整型的函数,实现了两个整数的求和
{
return x+y;
}
%>

  

以后可以对这个声明的变量和函数进行调用。

3.5 Jsp表达式

就是在JSP页面中执行的表达式。
语法:
<%= 表达式 %> // 注意: 表达式不以分号结束

举例:

<%!
String s ="张三";// 声明了一个字符串变量
int add(int x,int y)// 声明了一个返回整型的函数,实现了两个整数的求和
{
return x+y;
}
%>
<br>
你好,<%=s %><br>
x+y=<%=add(10,5) %><br>

  

4、JSP页面生命周期


jspService()就是用来处理用户请求。

jspService()方法被调用来处理客户端的请求。对每一个请求,JSP引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但也要注意多线程的编程带来的同步问题,由于该Servlet始终驻于内存,所以响应非常快。

下面是一个具体的实例,来了解JSP生命周期。
首先建立一个WEB PROJECT,项目的首页就是index.jsp 先将此项目部署到tomcat上。同时记忆,在tomcat下的work文件夹保存了比如servlet程序编译的.class文件都放在了这个文件夹中。这是你去查看,你是不会发现该.jsp文件被变为字节码文件的,为什么呢?因为你还没有访问它,所以jsp引擎不会将其转换成servlet,并生成字节码文件。

做一个项目,使页面返回一个九九乘法表,首先创建一个新的.jsp页面:

  

<%@ page language="java"import="java.util.*" contentType="text/html; charset=utf-8"%>
<%
String path = request.getContextPath();
String basePath = request.getSchema()+"://"+ request.getServerName()+":"+ request.getServerPort()+ path +"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'exercise.jsp' starting page</title>
<meta http-equiv="param" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="style.css">
-->
</head>
<body>
<%!
// 返回九九乘法表对应的HTML代码,通过表达式来调用,在页面上显示
String printMultiTable()
{
String s ="";
for(int i=1;i<=9;i++){
for(int j =1; j <= i; j++)
s += i +"*"+j +"="+(i*j)+"   &nbsp";
s +="<br>";// 追加换行标签
}
return s;
}
// 使用脚本的方式.JSP内置out对象
void printMultiTable2(JspWriter out)throwsException{
for(int i=1;i<=9;i++){
for(int j =1; j <= i; j++)
out.println(i +"*"+j +"="+(i*j)+"   &nbsp");
out.println("<br>");// 追加换行标签
}
%>
<h1>九九乘法表</h1>
<hr>
<%=printMultiTable()%>
<br>
<% printMultiTable2(out);%><!--脚本以;号结束-->
</body>
</html>

  





原文地址:https://www.cnblogs.com/archy2016/p/6117819.html