JSP

简介:JavaServerPage,java服务器端网页,本质是一个Servlet,用于简化Servlet编写。

           (网页中:动态内容Java代码编写,静态内容采用HTML页面的方式编写)

原理:URL以xxx.jsp的访问请求—— WEB容器(Servlet引擎)接收——交给JSP引擎去处理

           JSP引擎将其翻译成Servlet源程序——编译成class类文件——WEB容器调用装载该Servlet

规则:1.Java代码(也可以是其他语言)需要嵌套在<%和%>中,称之为脚本片段(Scriptlets),其他部分称为模板元素    

           2.JSP文件像HTML文件一样以路径形式访问,需放置在WEB应用程序中的除了WEB-INF及其子目录外的其他任何目录中

应用:在大型WEB应用程序的开发中,Servlet与JSP经常要混合使用,各司其职,

           Servlet通常用作控制组件,并处理一些复杂的后台业务,JSP则作为显示组件

            注:Servlet必须映射(设置被请求地址),JSP可以不映射(做请求页面)也可以映射(修改请求页面地址/被请求地址)

JSP_第1张图片
注册与配置JSP页面的访问路径

隐式对象

简介:没有声明就可以直接在<% %>代码里使用的9个对象

request:HttpServletRequest 的对象

response:HttpServletResponse 的对象(JSP页面中几乎不会用到)

pageContext:PageContext 的对象,页面的上下文,可获取其他8个对象和页面其他信息(可用于自定义标签)

session:HttpSession 的对象,代表浏览器和服务器的一次会话

application:ServletContext 的对象,代表当前WEB应用

config:当前JSP对应的Servlet的ServletConfig 对象(几乎用不到)

out:JspWriter 的对象,相当于一种带缓存功能的PrintWriter,调用out.println()可以直接把字符串打印到浏览器上

page:Obiect 的对象,指向当前JSP对应的Servlet对象的引用(只能调用Object的方法,开发几乎不用)

exception:声明<%@ page isErrorPage="true" %>时,才可以使用


基本语法

JSP模板元素:JSP页面中的静态HTML内容,定义了网页的基本骨架

JSP表达式:提供了将一个java变量或表达式的计算结果输出到客户端的简化方式,eg:Current time: <%= new java.util.Date() %>

              (本质是被翻译成out.print(…)语句,注:JSP表达式中的变量或表达式后面不能有分号)

JSP脚本片断:嵌套在<% 和 %>之中的一条或多条Java程序代码

                  1.多个脚本片段可以互相访问(就像在一个片段中)

                  2.脚本片段间可以任意嵌入文本、HTML标记和其他JSP元素

                  (单脚本片段中java语句可以不完整,整个组合完整就行,本质也是用out.println()进行的输出)

JSP_第2张图片
嵌套

注释:<%-- JSP注释信息 --%> 

JSP声明:将Java代码封装在<%!和 %>之中,它里面的代码将被插入进Servlet的_jspService方法的外面


域对象的属性操作

简介:pageContext、request、session、application(范围从小到大)这几个域对象有属性相关方法

属性方法:setAttribute(String name,Object value)

                  Object getAttribute(String name)

                  removeAttribute(String name)...

作用范围:pageContext:属性作用范围仅限于当前JSP页面

                  request:属性作用范围仅限于同一个请求

                  session:属性作用范围限于一次会话:浏览器打开直到关闭称之为一次会话(前提在此期间会话不失效)    

                  application:属性作用范围限于当前WEB应用(范围最大的属性作用范围,只要一处设置属性,其他jsp都能获取到)


请求的重定向与转发

JSP_第3张图片
转发与重定向

JSP指令

简介:为JSP引擎而设计的,它们并不直接产生任何可见输出,而只是告诉引擎如何处理JSP页面中的其余部分

格式:<%@ 指令 属性名="值" %>    

JSP 2.0中,定义了page、include和taglib这三种指令

Page指令:用于定义JSP页面的各种属性,作用于整个JSP页面

JSP_第4张图片
page指令

include指令:用于通知JSP引擎在翻译当前JSP页面时将其他文件中的内容合并进当前JSP页面转换成的Servlet源文件中,

                       这种在源文件级别进行引入的方式称之为静态引入,当前JSP页面与静态引入的页面紧密结合为一个Servlet。

            语法:<%@ include file="relativeURL"%> 指定被引入文件的相对路径(建议使用.jspf扩展名)

            过程:先翻译成servlet再进行合并,除了import和pageEncoding属性,其他属性设置的值需一致


JSP标签

简介:在JSP页面中使用Action元素可以完成各种通用的JSP页面功能,也可以实现一些处理复杂业务逻辑的专用功能。

          (Action元素采用XML元素的语法格式,即每个Action元素在JSP页面中都以XML标签的形式出现)

标签

简介:用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中,这种在JSP页面执行时的引入方式称之为动态引入

语法:   

            page属性用于指定被引入资源的相对路径,它也可以通过执行一个表达式来获得

            flush属性指定在插入其他资源的输出内容时,是否先将当前JSP页面的已输出的内容刷新到客户端

与include指令区别:动态引入生成会生成两个Servlet源文件,通过命令包含进来

                                  include指令静态引入生成一个Servlet源文件

" flush="true|false">

标签

简介:把请求转发给另外一个资源

语法:

            page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得

几种转发的区别:1.标签的前后都能有JSP模版内容(还能用标签传参)

                             2.调用RequestDispatcher.forward方法的JSP脚本代码的前后不能有JSP模版内容

                             3.调用PageContext.forward方法的JSP脚本代码的后面不能有JSP模版内容

标签

简介:能在标签和标签下使用子标签用于传参

使用:

             接收与表格接收参数一致 <% String value = request.getParameter("userName");  %>


中文处理

JSP_第5张图片
乱码问题

你可能感兴趣的:(JSP)