JSP
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSP相关的知识,希望对你有一定的参考价值。
JSP起源
- 在很多动态网页中,绝大部分都是固定不变的,只有局部内容需要动态产生和改变。
- 如果使用Servlet程序来输出只有局部内容需要动态改变的网页,其中所有静态内容也需要程序员用java程序代码产生,整个Servlet程序的代码将非常臃肿,编写和维护都将非常困难。
- 对大量静态内容的美工设计和相关html语句的编写,并不是程序猿所要做的工作,程序猿对此也不一定在行,网页美工设计和制作人员不懂Java编程,更是无法来完成这样的工作。
- 为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server Pages)技术作为解决方案。
- JSP是简化Servlet编写的一种技术,它将Java代码和HTML 语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用普通静态HTML页面的方式编写
建立对JSP的直观认识
- JSP页面是由HTML语句和嵌套在其中的JAVA代码组成的一个普通文本文件,JSP页面的文件拓展名必须为.jsp。
- 在JSP页面中编写JAVA代码需要嵌套在<%和%>中,嵌套在<%和%>之间的JAVA代码被称之为脚本片段(Scriptlets),没有嵌套在<%和%>之间的内容被称之为JSP的模版元素。
- JSP中的JAVA代码可以使用out.println语句将其他JAVA程序代码产生的结果字符串输出给客户端,也可以使用System.out.println语句将它们打印到命令窗口。
- JSP文件就像普通的HTML文件一样,它们可以放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中,JSP页面的访问路径与普通HTML页面的访问路径形式也完全一样
- 在JSP页面中也可以使用一种称之为JSP表达式的元素,只需将要输出的变量或表达式直接封装在<%=和%>之中,就可以向客户端输出这个变量或表达式的运算结果。在JSP表达式中嵌套的变量或表达式后面不能有分号。
JSP运行的原理
- WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。
- 每个JSP页面在第一次被访问时,JSP引擎将它翻译成一个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类文件,然后再由WEB容器(Servlet引擎)像调用普通Servlet程序一样的方式来装载和解释执行这个由JSP页面编译成的Servlet程序。
- JSP规范也没有明确要求JSP中的脚本程序代码必须采用JAVA语言,JSP中的脚本程序代码可以采用JAVA语言之外的其他脚本语言来编写,但是JSP页面最终必须转换成JAVA Servlet程序。
- 可以在WEB应用程序正式发布之前,将其中所有JSP页面预先编译成Servlet程序。
JSP页面的隐含变量(没声明就可以使用)
可以用到request,response,pageContext,session,application,config,out,page这8个隐含对象,(实际上还可以使用一个叫exception的隐含对象)
1、request:HttpServletRequest对象
2、response:HttpServletRequest对象(在JSP页面中几乎不会调用response的任何方法)
3、pageContext:页面的上下文,是pageContext 的一个对象,可以从该对象中获取到其他8个隐含对象,也可以从中获取到当前页面的其他信息。
4、session:代表浏览器和服务器的一次回话,是HttpSession的一个对象。
5、application:代表当前WEB应用,是ServletContext对象。
6、config:当前JSP对应的Servlet的ServletConfig对象。(几乎不使用)若需要访问当前JSP配置的初始化参数,需要通过映射的地址才可以。
映射JSP:
<servlet>
<servlet-name>hellojsp</servlet-name>
<jsp-file>/hello.jsp</jsp-file>
<init-param>
<param-name>test</param-name>
<param-value>testValue</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>hellojsp</servlet-name>
<url-pattern>/hellojsp</url-pattern>
</servlet-mapping>
7、out:JspWriter对象。嗲用out.println()可以直接把字符串打印到浏览器上。
8、page:指向当前JSP对应的Servlet对象的引用,但为Object类的方法(几乎不用)
9、exception:在声明了page指令后才可以使用:在JSP页面头部 <%page isErrorPage="true"%>
注:pageContext,request,session,application(对属性的作用域的范围从小到大)
JSP模版元素
JSP页面中的静态HTML内容称之为JSP模版元素,在静态的HTML内容之中可以嵌套JSP其他各种元素来产生动态内容和执行业务逻辑。
JSP模版元素定义了网页的基本顾家,即定义了页面的结构和外观。
修改字符编码模版-->window-->preferences-->搜索JSP-->JSP Files-->Encoding--->utf-8-->应用
JSP表达式
JSP表达式(expression)提供了将一个java变量或表达式的计算结果输出到客户端的简化方式,他将要输出的变量或表达式直接封装在<%= 和%>之中。
举例:Current time:<%=new java.util.Date()%>
JSP表达式中的变量或表达式的计算结果将被转换成一个字符串,然后被插入进整个JSP页面输出结果的相应位置处。
JSP表达式中的变量或表达式后面不能有分号(;),JSP表达式被翻译成Servlet程序中的一条out.println(..)语句
脚本片段
JSP脚本片段(scriptlet)是指嵌套在<%和%>之中的一条或多条JAVA程序代码。多个脚本片段中的代码可以相互访问。
<%
int x = 3;
%>
<p>这是一个HTML段落<p>
<%
out.println(x);
%>
JSP声明及注释
JSP声明:JSP声明将JAVA代码封装在<!%和%>之中,它里面的代码将被插入进Servlet的_jspService方法的外面(在JSP页面中几乎从不这样使用)
JSP注释格式:<%--JSP注释--%> <!--HTML注释--> 区别:JSP注释可以阻止JAVA代码的执行
以上是关于JSP的主要内容,如果未能解决你的问题,请参考以下文章
JSP运行过程 JSP脚本 静态动态包含 jsp指令 jsp内置对象jsp四大作用域 jsp动作元素 EL表达式 JSTL 设计模式 JSP开发模式 EL内置对象