目录
ex1-----简单计数器(利用成员变量被所有用户共享这一性质)
1.jsp页面基本结构
a.普通的HTML标记和JavaScript标记
b.JSP标记,如指令标记,动作标记
c.变量和方法的声明
d.Java程序片
e.Java表达式
2.声明变量和定义方法
a.在<%! %>标记之间声明变量和定义方法
b.符号标记的内容习惯放在JSP页面指令之后,<HTML>之前
c.<%! %>标记符之间声明的变量作为类的成员变量
d.<%! %>之间声明的变量在整个jsp页面内都有效
e.这些变量占有的内存空间直到Tomcat服务器关闭才释放
ex1-----简单计数器(利用成员变量被所有用户共享这一性质)
<%@ page contentType = "text/html" %>
<%@ page pageEncoding= "utf-8" %>
<html>
<body bgcolor =yellow>
<%!
int i =0;
%>
<%
i++;
%>
<p style="font-family:宋体;font-size:36">您是第<%= i %>个访问本站的用户。</p>
</body>
</html>
图1 运行结果
原理:当多个用户请求一个jsp页面时,Tomcat服务器为每个用户启动一个线程,这些线程由Tomcat服务器来管理,这些线程共享JSP页面的成员变量,因此任何一个用户对JSP页面成员变量操作的结果,都会影响到其他用户。
3.定义方法和定义类
ex2:调用方法和类进行简单计算
<%@ page contentType = "text/html" %>
<%@ page pageEncoding= "utf-8" %>
<html>
<body bgcolor =#ffccff>
<p style-"font-family:宋体;font-size:36;color:blue">
<%!
double multi(double x,double y){//定义方法
return 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.97;
double y=20.8;
out.print("调用multi方法计算"+x+"与"+y+"的乘积:<br>");
out.print(multi(x,y));
out.print("<br>调用div方法计算"+y+"除以"+x+"的商:<br>");
String s = String.format("小数点保留三位:%10.3f",div(y,x));
out.println(s);
Circle circle=new Circle();
circle.r=3.6;
out.print("<br>半径是"+circle.r+"的园面积:"+circle.getArea());
%>
</p>
</body>
</html>
图2 运行结果
4.java程序片<% %>
5.java表达式<%= %>
可在其之间插入一个可以求值的表达式,不可插入语句。
6.JSP中的注释
HTML注释<!-- -->
JSP注释<%-- --%>
两个注释区别:HTML的注释可以在浏览器中查看页面源码看到,而JSP的注释是看不到的,因为JSP的注释不会被发送到客户端。
7.JSP指令标记
a.page指令标记(定义整个jsp页面的一些属性和这些属性的值)
语法:
一个属性一个值
<%@ page 属性1="属性1的值"%>
<%@ page 属性2="属性2的值"%>.......
一个属性多个值
<%@ page 属性1="属性1的值" 属性2="属性2的值".....%>
属性:contentType确定JSP页面响应的MIME类型(不允许使用2次)
pageEncoding定义页面使用的编码
language定义用户使用的语言(该属性值目前只能取java)
import为JSP页面引入Java运行环境提供的包中的类
sessio用与设置是否要使用内置的session对象
buffer用来指定out设置的缓冲区的大小,或者不设置缓冲区
outFlush指定out的缓冲区被填满时,缓冲区是否自动刷新
isThreadSafe设置访问的JSP页面是否线程安全
info为JSP页面准备一个常用但可能要经常修改的字符串
b.include指令标记(在JSP页面内整体嵌入一个文件)
<%@ include file="文件的url"%>
8.jsp动作标记(影响jsp运行时的功能)
include动作标记
语法:
无param子标记
<jsp: include page="文件的url">
有子标记
<isp:include page="文件的url">
param子标记
</jsp:include>
forward动作标记
无param子标记
<jsp:forward page="要转向的页面">
有子标记
<jsp:forward page="要转向的子标记">
param 子标记
</jsp fowrward>
useBean动作标记
ex3:消费总和
<%@ page contentType = "text/html" %>
<%@ page pageEncoding= "utf-8" %>
<%@ page import="java.util.regex.Pattern"%>
<%@ page import="java.util.regex.Matcher"%>
<%!
public double getPriceSum(String input){
Pattern pattern;//模式对象
Matcher matcher;//匹配对象
String regex="-?[0-9][0-9]*[.]?[0-9]*";//匹配数字的正则表达式
pattern=Pattern.compile(regex);//初始化模式对象
matcher=pattern.matcher(input);//初始化匹配对象,用于检索input
double sum=0;
while(matcher.find()){
String str=matcher.group();
sum +=Double.parseDouble(str);
}
return sum;
}
%>
<html>
<body bgcolor =cyan>
<p style="font-family:黑体;font-size:20">
<br>张三的菜单</br>
<% String str="麻婆豆腐:20.6元,红烧肉:68.9元";
%>
<br><%= str %></br>
<br><b><i>消费总和<%= getPriceSum(str)%></i></b></br>
<br>李四的菜单</br>
<% str="剁椒鱼头:62.9元,烤鸭:19.9元,红焖大虾:289.9元";
%>
<br><%= str %></br>
<br><b><i>消费总和<%= getPriceSum(str)%></i></b></br>
</p>
</body>
</html>
图3 运行结果
9.心得体会
今天学习了jsp的基本语法,几个代码打下来,对jsp页面的基本构成有了初步了解,但是在最后一个代码中出现的pattern,和matcher第一次使用很陌生,要查阅相关资料拿下他们。我相信每天坚持,再小的努力乘以365都可以很明显,坚持下来!不过过几天可能会跟着学校做实训项目,Java加数据库,jsp的学习会先放放,但是来csdn打卡整理是不会落下的,期待遇见更好的自己!