第二章 JSP语法

一、jsp页面基本结构

jsp页面构成:在传统的HTML页面文件中加入Java程序片和JSP标记构成。

一个jsp页面由五种元素组成:
1.普通的HTML标记和Javascript标记
2.JSP标记,如指令标记、动作标记
3.变量和方法声明
4.Java程序片
5.Java表达式

二、 jsp声明

声明变量和定义方法:

一个声明语句可以声明一个或多个变量、方法,供后面的Java代码使用。在JSP文件中, 必须先声明这些变量和方法然后才能使用它们。

1.成员变量

就好比 java中 类里声明成员变量(全局变量)

<%! 变量 %>

2.java程序片

<% jsp程序片 %>

在jsp程序片被定义的变量为局部变量
程序片的执行
程序片的执行

示例:
example2_2

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
全局变量i
<%! int i=0; %>
全局变量在局部内自增
<% i++; %>
<p>
刷新后会自增
你是第<%= i %>个访问本站的用户
</p>
</body>
</html>

错误示例:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
全局变量i
<%! int i=0; %>
<% i++; %>
局部变量j
<% int j=88; %>
局部变量j不能在全局被使用,报错
<%! out.print(j); %>
<p>
你是第<%= i %>个访问本站的用户
</p>
</body>
</html>        

3.定义方法和类

<%! 方法 %>

示例:
example2_3

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
定义x*y方法
<%! 
double multi(double x,double y){
	return x*y;
} 
%>
定义x/y方法
<%!
double div(double x,double y){
	return x/y;
}
%>
定义计算圆面积的类
<%!
class Circle{
	double r;
	double getArea(){
		return 3.1415926*r*r;
	}
}
%>
<%
double x=8.79;
double y=20.8;
out.print("调用mulit方法计算x*y<br>");
out.print(multi(x,y));
out.print("<br>调用div方法计算x*y<br>");
out.print(div(x,y));
Circle circle = new Circle();
circle.r=3.6;
out.print("<br>半径是"+circle.r+"的圆面积<br>"+circle.getArea());
%>
</body>
</html>

三、jsp表达式

  1. 不可以插入语句(表达式后面不能有;)
  2. “<%= %>”是一个完整的符号,“<%”与“=”之间不能有空格
  3. 由于表达式的值会被转化成String(字符串的形式),所以可以在一个文本行中使用表达式,也就是说,在编写Jsp页面时,要把Java表达式按普通的文本来使用。

<%= 一个可求值的表达式 %>

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% int x=12,y=9; %>
<p>
计算表达式x+y+x%y,即<%= x %>+<%= y %>+<%= x %>%<%= y %>的值:
<%= x+y+x%y %>
<% if(x-y>=0){ %>
<br>如果<%= x %>大于<%= y %>,计算<%=x %>-<%=y %><%=x-y %>的平方根:
<%=Math.sqrt(x-y) %>
<% } %>
</p>
</body>
</html>

四、jsp注释

1.JSP注释,注释内容不会被发送至浏览器甚至不会被编译

<%-- 注释 --%>

2.HTML注释,通过浏览器查看网页源代码时可以看见注释内容

< !-- 注释 – >

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%--下面是java程序片 --%>
<%
String str ="jsp";
int index=str.lastIndexOf("\\");
str=str.substring(index+1);
%>
<!--下面是java程序片 -->
</body>
</html>

五、jsp指令标记

1.page指令标记

page指令用来定义整个jsp页面的一些属性和这些属性的值,属性值用单引号或双引号括起来。

  1. 可以用多个page指令分别为每个属性指定值。

<%@page 属性1=“属性1的值” %>
<%@page 属性2=“属性2的值” %>
<%@page 属性3=“属性3的值” %>

<%@page 属性n=“属性n的值” %>

  1. 也可以用一个page指令指定多个属性的值
    (一个属性有多个值,用逗号分开。多个属性值,用空格隔开。)

<%@page 属性1=“属性1的值” 属性2=“属性2的值” …%>

  1. 注意不允许两次给contentType,pageEncoding赋值

例如:
两个page指令
<%@page contentType=“text/html” %>
<%@page pageEncoding=“utf-8” %>
合并成一个page指令
<%@page contentType=“text/html” pageEncoding=“utf-8” %>
下表列出与Page指令相关的属性:

属性描述
contentType指定当前JSP页面的MIME类型和字符编码
pageEncoding当前页面的编码格式,默认是UTF-8
language定义JSP页面所用的脚本语言,默认是Java
import导入要使用的Java类
session指定JSP页面是否使用内置的session对象,属性值默认为true
buffer指定out对象使用缓冲区的大小,默认为8kb,也可以设置“none”,即不使用缓冲区
autoFlush控制out对象的 缓存区
isThreadSafe指定对JSP页面的访问是否为线程安全
info为jsp页面准备一个常用但可能经常修改的字符串

getServletInfo()
获取info的属性值

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<%@ page info="0713图像back2.png" %>
<% String s=getServletInfo();
   String str[]=s.split("图像");%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<center>
<body background="image/<%=str[1] %>">
<p style="font-family:宋体;font-size:36;color:blue">
<br><%=str[0] %>快乐男声
</p>
</body>
</center>
</body>
</html>

2.include指令标记

在jsp页面内某处整体嵌入一个文件

<%@ include file=“文件的url”%>

  1. 要插入的文件在webapp的一个新建文件夹(example2_10)

<%@ include file=“/example2_10/example2_10_1.jsp” %>

在这里插入图片描述

  1. 要插入的文件在webapp下

<%@ include file=“example2_10_1.jsp” %>

示例:
example2_10_1

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
    
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
include 指令标记
</body>
</html>

example2_10_2

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
 <%@ include file="/example2_10/example2_10_1.jsp" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

</body>
</html>

运行结果

六、jsp动作标记

1.include动作标记

jsp页面动态包含一个文件,即jsp页面运行时才将文件加入。

语法格式:

<jsp:include page=“文件的URL”/>

<jsp:include page=“文件的URL”>
param子标记
</jsp:include>

注意
不使用param子标记时,必须使用第一种形式

include指令标记与include动作标记的区别

  1. include指令标记,在编译阶段就处理所需要的文件,被处理的文件在逻辑和语法上依赖与当前的jsp页面,优点是,页面的执行速度快。
  2. include动作标记,在jsp运行时处理文件,被处理的文件在逻辑和语法上独立于jsp页面。可以使用param动作子标记灵活处理所需要的文件,缺点是,执行速度相对与include指令标记要慢一些。

2.param动作标记

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

param动作标记的语法格式是:

<jsp:param name=“参数” value “参数的值”/ >

示例:
example2_11_1

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% double a=6.2,b=7.08,c=9.22; %>
计算三边为<%= a %>,<%= b %>,<%= c %>的三角形面积=
<jsp:include page="/example2_11/example2_11_2.jsp">
	<jsp:param name="sideA" value="<%= a %>"/>
	<jsp:param name="sideB" value="<%= b %>"/>
	<jsp:param name="sideC" value="<%= c %>"/>
</jsp:include>
</body>
</html>

example2_11_2

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<%
String sideA=request.getParameter("sideA");
String sideB=request.getParameter("sideB");
String sideC=request.getParameter("sideC");
double a=Double.parseDouble(sideA);
double b=Double.parseDouble(sideB);
double c=Double.parseDouble(sideC);
%>
<%! public String getArea(double a,double b,double c){
		if(a+b>c&&a+c>b&&b+c>a){
			double p=(a+b+c)/2.0;
			double area=Math.sqrt(p*(p-a)*(p-b)*(p-c));
			String result=String.format("%.2f",area);
			return result;
		}else{
			return("不能构成三角形");
		}
}
%>
<%= getArea(a,b,c) %>
</body>
</html>

3.forward动作标记

从该指令处停止当前页面的执行,而转向执行page属性指定的JSP页面。

forward动作标记的语法格式是:

<>jsp:forward page=“要转向的页面”/>

<>jsp:forward page=“要转向的页面”>
param子标记
</jsp:forwarf>

示例:
example2_12

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<jsp:forward page="example2_12_1.jsp">
	<jsp:param name="number1" value="number1"/>
</jsp:forward>
</body>
</html>

example2_12_1

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<% String s=request.getParameter("number1");
out.println(s);
%>
</body>
</html>
  • 23
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JSP第四章新闻发布系统主要是通过JSP技术来实现一个简单的新闻发布平台,使用户能够浏览、发布和管理新闻内容。该系统具有以下特点和功能。 首先,系统包含一个首页,用于展示最新的新闻内容。用户可以在首页上浏览新闻标题和摘要,并点击查看完整的新闻内容。通过JSP的动态页面生成,用户每次访问首页,都可以获取最新的新闻列表。 其次,系统还包含一个新闻详情页面,用于展示完整的新闻内容。用户可以通过首页或其他途径进入该页面,并在该页面上阅读新闻的详细内容和相关图片。页面的布局和样式可以通过JSP和CSS来设计,使其具有良好的可读性和用户体验。 此外,系统还提供了一个发布新闻的功能。用户可以通过一个表单页面输入新闻的标题、内容和图片等信息,并通过JSP技术将该信息保存到数据库中。系统会对用户输入的数据进行验证和处理,确保发布的新闻内容的正确性和安全性。 最后,系统还包含一个管理后台,用于对新闻内容进行管理和编辑。管理员可以登录管理后台,查看已发布的新闻列表,并对其进行编辑、删除或排序等操作。通过JSP的数据库连接和增删改查功能,管理员可以方便地管理新闻内容。 总的来说,JSP第四章新闻发布系统通过JSP技术实现了一个简单易用的新闻发布平台,用户可以方便地浏览、发布和管理新闻内容。这个系统不仅能提高新闻的传播和发布效率,也能提升用户的阅读体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值