前面两期,我们谈到了怎么进行servlet的编写。一种方法是将传统的java工程改造成servlet工程;另外一种方法就是直接利用maven创建一个webapp工程。事实上呢,如果大家观察仔细的话,可以发现系统当时其实已经帮助我们创建了一个jsp,是index.jsp。
servlet和jsp之间的关系,有点类似于controller和view的关系。servlet是java里面嵌入html,而jsp是html里面嵌入java。今天就可以通过这个机会看看,单纯jsp工程是怎么创建的。
1、创建maven下的webapp工程,类型选择maven-archetype-webapp
2、依次Next确定之后,直到工程生成,就可以看到一个index.jsp文件,内容如下,
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
3、配置tomcat服务器
3.1 配置端口
3.2 配置 deployment
4、保存配置,启动web服务器
没有意外的话,输入http://localhost:8090/Hello_war_exploded/之后,就会看到一个Hello World的网页出现了。这一切看上去都平淡无奇。没关系,我们可以继续通过几个实例看一下jsp是怎么嵌入java代码的。
5、jsp范例
5.1 将jsp的直接输出修改为java代码打印输出
<html>
<head>
<title>第一个 JSP 程序</title>
</head>
<body>
<%
out.println("Hello World");
%>
</body>
</html>
从这段代码看,显然两个%之间的内容是web服务器帮忙解析的。其实这段代码也是经过了jsp-》java servlet-》html转变的过程,只不过是后台帮忙做了,前台是看不出来的。可以逆向看一下html内容,和之前的直接输出几乎没有区别。
<html>
<head>
<title>The first jsp program</title>
</head>
<body>
Hello World
</body>
</html>
5.2 获取当前日期
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>日期</title>
</head>
<body>
<p>
今天的日期是: <%= (new java.util.Date()).toLocaleString()%>
</p>
</body>
</html>
这段代码可以比较明显地看出来,日期的获取方法是明显的java编程方法。不管是java.util.Date,还是toLocalString,形式上几乎一眼就可以看出来是java编程。
5.3 jsp生命周期
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<html>
<head>
<title>life.jsp</title>
</head>
<body>
<%!
private int initVar=0;
private int serviceVar=0;
private int destroyVar=0;
%>
<%!
public void jspInit(){
initVar++;
System.out.println("jspInit(): JSP被初始化了"+initVar+"次");
}
public void jspDestroy(){
destroyVar++;
System.out.println("jspDestroy(): JSP被销毁了"+destroyVar+"次");
}
%>
<%
serviceVar++;
System.out.println("_jspService(): JSP共响应了"+serviceVar+"次请求");
String content1="初始化次数 : "+initVar;
String content2="响应客户请求次数 : "+serviceVar;
String content3="销毁次数 : "+destroyVar;
%>
<h1>JSP 测试</h1>
<p><%=content1 %></p>
<p><%=content2 %></p>
<p><%=content3 %></p>
</body>
</html>
这段代码比较有意思,大家可以通过不断刷新网页,验证content1、content2、content3这个三个数值是什么时候发生改变的。比如说,为什么content1没有变?为什么content2一直在变?为什么content3好像一直是0,究竟应该什么时候content3才会发生改变等等。
6、总结
jsp的出发点是好的,比如说设计者是想通过后端java解析,可以实现view界面的自由开发。无奈后来出现了更多的后端模板引擎,甚至出现了vue这种前端搞定一切的架构,所以jsp本身其实就没有那么重要了,它所留下来的更多的是其设计思想。
标签:web,serviceVar,java,jsp,destroyVar,JSP,servlet From: https://blog.51cto.com/feixiaoxing/5881291