JSP:全名为Java Server Pages,其根本是一个简化的Servlet设计,是一种制作动态网页的标准技术。
在web目录下创建hello.jsp文件
<%-- jsp中要出现中文,一定要指定contentType --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Hello World
</body>
</html>
jsp的工作原理
当客户端第一次访问jsp时,由tomcat将jsp翻译成Servlet,也就是自动生成一个对应的Servlet,由这个Servlet进 行工作,处理请求,发送响应(将jsp中的html代码发回给浏览器)。
根据上面的hello.jsp的例子,找到生成的Servlet
<%-- jsp中要出现中文,一定要指定contentType --%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
//java代码 ,通过查看生成的Servlet,写的Java代码放到service方法中
String name = "tom";
//这里不能定义Java方法,因为代码是在service方法中
/*public void test(){
}
*/
//错误 :service方法中request是方法参数,不能重复定义
//int request = 10;
//在jsp中直接可以使用request对象,就是service的请求对象
//在jsp中还可以直接使用哪些引用名?:
//request、response、pageContext、session、application、config、out、page
//以上的都是jsp的内置对象
//例如,使用一下out对象
out.println("Hello World!!!!!!");
%>
<html>
<head>
<title>Title</title>
</head>
<body>
Hello World
</body>
</html>
jsp的内置对象request、response、pageContext、session、application、config、out、page
jsp中的输出表达式的写法:<%= 表达式 %>
<body>
Hello World<br>
<!-- 等同于out.print("china") -->
<%="china"%><br>
china<br>
<%=(i++)-10 %><br>
<%out.print((i++)-10); %><br>
(i++)-10<br>
</body>
使用jsp在页面上输出9*9乘法表 和 *号的正三角形
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
Hello <br>
<%//输出9*9乘法表%>
<table border="1">
<%for(int i=1;i<=9;i++){%>
<tr>
<%for(int j=1;j<=i;j++){%>
<%//jsp中的输出表达式的写法:第一个百分号之后加= %>
<td><%=j+"*"+i+"="+j*i%></td>
<%}%>
</tr>
<%}%>
</table>
<%//输出正三角形%>
<table border="1">
<%for(int i=1;i<7;i++){%>
<tr>
<%for(int k=0;k<7-i;k++){%>
<td><%=" "%></td>
<%}%>
<%for(int j=1;j<i*2;j++){%>
<%//jsp中的输出表达式的写法:第一个百分号之后加= %>
<td><%="*"%></td>
<%}%>
</tr>
<%}%>
</table>
</body>
运行结果:
Jsp的内置对象
在JSP中可以直接使用的引用,而变量则引用了对象。这些对象就是内置对象
内置对象包括:
1.out用来传送内容给客户端,其实是一个输出流对象,是JspWriter类的示例,JspWriter类在jsp-api.jar中 out常用的方法:print和println方法
2.request 客户端请求对象,是HttpServletRequest接口的实例
3.response网页传回用户端的响应,是HttpServletResponse接口的实例
4.session 与请求有关的会话对象,客户端和服务器的会话对象
5.application 是ServletContext接口的对象,生命周期最长的应用程序对象
6.pageContext 当前JSP的页面上文对象,当访问了这个jsp时,就创建了PageContext对象,当jsp访问结束时 PageContext对象被销毁。
PageContext对象能获得其他的八个内置对象。
例如:pageContext.getRequeste(); pageContext.getSession(); 如果要封装一个Java方法,在方法中要使用 request、response、session、ServletContext等对象,就要定义好多的方法参数,但是只定义一个PageContext 参数就可以获得其他的内置对象。
PageContext对象具有setAttribute和getAttibute方法 PageContext的生命周期 小于 request
可以将一个对象存储到PageContext、request、session、ServletContext的Attribute中,对象就有了自己的 生命周期
JSP中的JavaBean的生命周期从小到大依次是:page、request、session、application
指令 1.page 2.include 3.taglib 标签库 JSP的include指令用法
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
String date = sdf.format(new Date());
out.print(date);
%>
<html>
<head>
<title>Title</title>
</head>
<body>
</body>
</html>
<!--包含其他JSP的内容,拷贝到该位置,能衔接到一起-->
<%@include file="test2.jsp"%>