为什么JSP也是一种动态WEB资源的开发技术呢?
写JSP虽然就像是在写html,但JSP技术允许在页面中编写java代码,并且允许开发人员在页面中获取request、response等WEB开发常用对象,实现与浏览器的交互,所以JSP也是一种动态WEB资源的开发技术。
JSP页面的基本结构
JSP页面的组成:
1.HTML标记
2.JSP标记(分为指令标记、动作标记)
3.成员变量与成员方法<%!%>
4.Java程序片<%%>
5.Java表达式<%=%>
6.注释
JSP页面举例
<%@ page contentType="text/html;Charset=GB2312" %> <!-- jsp指令标签 -->
<%@ page import="java.util.Date" %> <!-- jsp指令标签 -->
<%! Date date = null; // 变量声明
int sum = 0;
public int add(int m, int n) // 方法声明
{ return m + n;
}
%>
<!—html标记 -->
程序片创建Date对象:<P>
<% date=new Date(); //java程序片
out.println(date);
sum=add(12,34);
%>
<BR>在下一行输出和:<BR>
<%= sum+100 %> <!-- Java表达式 -->
例:在jsp页面中输出当前时间
JSP调用和运行原理
D:\lessons\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\jd(我们的项目名称)\org\apache\jsp
我们打开index_jsp.java查看
我们发现它继承的是org.apache.jasper.runtime.HttpJspBase
我们继续查看 org.apache.jasper.runtime.HttpJspBase
WEB服务器在执行JSP页面时,是如何把JSP页面中的html排版标签输出给浏览器的?
我们可以通过index_jsp.java中的service方法查看到
我们可以通过index_jsp.java中的service方法查看到
浏览器显示的jsp页面时通过index_jsp.java中的service方法输出的
JSP页面中的java代码服务器是如何执行的?
WEB服务器在调用JSP时,会给JSP提供一些什么java对象?
不管是JSP还是Servlet,虽然都可以用于开发动态web资源。但由于这2门技术各自的特点,
在长期的软件实践中,人们逐渐把servlet作为web应用中控制组件来使用,而JSP技术作为数据显示模板来使用。
其原因为,程序的数据通常要美化后再输出:
让jsp即用java代码产生动态数据,又做了美化会导致页面难以维护。
让servlet既产生数据,又在里面嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。
因此最好的办法就是根据这两门技术的特点,让它们各自负责各的,servlet只负责响应请求产生数据,
并把数据通过转发技术带给jsp,数据的显示jsp来做
<%@ page contentType="text/html;Charset=GB2312" %>
<BODY>
<%! long count = 0; //被客户共享的count
synchronized void setCount() //synchronized修饰的方法
{ count++;
}
%>
<% setCount();
out.println("您是第"+count+"个访问本站的客户");
%>
</BODY>
java程序片