但是多线程要注意临界资源的共享和保护问题。
workplace地址:
work地址:
新建项目:
插播一条编译错误:
.java:说明有jsp编译生成的字节码文件。
大体上jsp页面的生命周期:Init是一个初始化方法,在jsp页面在第一次被请求的时候执行这个方法;然后将servelt常驻留于内存,针对用户的每一个请求,分别再创建线程,根据每一个线程创建一个jspservice方法,来处理用户的请求。
<%@ page language="java" import="java.util.*" contentType="text/html; charset=UTF-8"%>
<%@ page import="java.text.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<h1>JSP生命周期</h1>
<hr>
<%
SimpleDateFormat sdf=new SimpleDateFormat("YYYY年MM月dd日");
String s=sdf.format(new Date());
%>
今天是:<%=s %>
</body>
</html>
说明类被重新编译过:
新建exercise项目:
<%@ page language="java" import="java.util.*" contentType="text/html; charset=utf-8"
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<%!
//返回九九乘法表对应的HTML代码,通过表达式来调用,在页面上显示
String printMultiTable1()
{
String s=""; //String s=""; 表示申请了内存资源,但资源空间值为空。
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
{
s+=i+"*"+j+"="+(i*j)+" ";}
/*在html代码中每输入一个转义字符 就表示一个空格,输入十个 ,页面中就显示10个空格位置。
而在html代码中输入空格,不管输入多少个空格,最终在页面中显示的空格位置只有一个。*/
s+="<br>"; //<hr> 是分割线,<br>是换行
}
return s;
}
//JSP内置out对象,使用脚本方式调用, 打印九九乘法表
void printMultiTable2(JspWriter out) throws Exception
{
for(int i=1;i<=9;i++)
{
for(int j=1;j<=i;j++)
{
out.println(i+"*"+j+"="+(i*j)+" ");
}
/*在html代码中每输入一个转义字符 就表示一个空格,输入十个 ,页面中就显示10个空格位置。
而在html代码中输入空格,不管输入多少个空格,最终在页面中显示的空格位置只有一个。*/
out.println("<br>"); //<hr> 是分割线,<br>是换行
}
}
%>
<h1>九九乘法表</h1>
<hr>
<%=printMultiTable1() %>
<br>
<% printMultiTable2(out); %>
</body>
</html>
输出结果: