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内置对象

jsp frame

19 jsp——jsp的转发标签

Tip:JSP标签也称之为Jsp Action(JSP动作)元素

JSP_动作和隐式对象

JSP系列:JSP进阶-EL表达式和JSP标签