jsp服务端页面技术
来源:互联网 发布:三网合一网站源码 编辑:程序博客网 时间:2024/06/04 19:32
JSP概述:
JSP全名是JavaServer Pages,它是建立在Servlet规范之上的动态网页开发技术(Java语言中的动态页面技术).
其它动态页面技术:
ASP:Active Server Page
C#:MS
PHP:
CGI:Common Gateway Interface:公共网关接口
JSP技术所开发的web应用程序时基于Java的,它可以用一种简捷而快速的方法从Java程序生成web页面,其使用上具有如下几点特点:
跨平台 业务代码相分离 组件重用 预编译
为什么会产生JSP技术:因为使用Servlet进行动态页面的开发成本太高,需要在Java代码中使用输出流输出页面内容。(1、一旦页面发生修改,都需要对类进行重新编译和部署。2、因为把页面中的内容放到了Java程序中,直接导致前端人员无法介入开发。)所以我们需要一种修改后不需要重新编译部署,且代码是直接编写HTML/CSS/JS的内容,只在需要的部分嵌入Java代码的动态页面技术。
如何创建一个JSP:在项目目录中创建一个文本文件,后缀为.jsp。第一行是JSP的声明。剩下的部分直接写HTML、CSS、JavaScript内容即可。
源文件和Class文件可以在”Tomacat”安装目录/work/……………下找到
JS文件转换成类文件时会带有包名,该包名为org.apache.jsp
JSP就是Servlet
三种脚本
<%Java代码(变量,方法,语句等) %>:页面中所有的Java代码都会被翻到JSP所对应的Servlet类中的_jspService方法中。所以,一个页面中有多个<%%>Java代码段是可以的。JSP页面在被翻译后,<%%>中的Java代码就是_jspService方法中的代码,页面上的标签等静态内容是_jspService方法中用out输出流向浏览器输出的内容。
<%=Java表达式 %>:计算表达式的值并替换到页面中的当前位置
标记之间插入的是表达式,不能插入语句
注意:脚本之间不能嵌套
表达式不能加分号结束
<%!声明(成员)定义的变量或方法等 %>【了解】
声明属性:
声明方法
三种注释
JSP的注释:<%-- 注释内容 --%>:直接写在JSP页面中的。生存周期最短。翻译后消失。
Java的注释:在<%%>中可以使用Java中的单行(//)和多行注释(/**/)(文档注释不能用/** */)。编译后消失。
标记语言的注释:<!---->:一直存在(把这种注释当成和HTML标签一样的页面内容发给浏览器)。【最好不用:浪费带宽。把程序结构暴露给客户了,黑客可以猜测程序结构和漏洞,进行攻击】
三个编译指令(JSP指令):page,include,taglib三种指令
<%@page %>:设置当前JSP页面中的一些信息
contentType:有效的文档类型
import:导包:一个import属性可以同时导多个包,逗号分隔
pageEncoding:当前页面 指定页面的编码格式
isErrorPage:指定该页面是否为错误处理页面,如果有,则有Exception对象
errorPage: 某个JPS页面的相对路径 指定一个错误页面,如果该JSP抛出未捕捉的异常,则跳到errorPage指定的页面
等等一些属性
除了import属性外,其他属性都只能出现一次,否则会编译失败.page指令是区分大小写的
Page指令对整个页面有效,而与其书写的位置无关,但是习惯上把page指令写在JSP页面的最前面
<%@ include%>:静态包含(另一个页面):只有一个file属性,该属性用来指定插入jsp页目标位置的文件资源
file:引用被包含的页面(相对路径)
在翻译阶段,把被包含页面的内容直接合并到主页面中。所以,被包含页面是不单独进行翻译和编译的。
主页面和被包含页面中的指令属性值必须完全一样,差一个空格都会导致500错误(contentType=”text/html; charset=UTF-8”)
<%@ taglib %>:导入第三方标签库,在JSEL时讲解
七个动作指令【了解,只需要理解动态包含和静态包含的区别】
<jsp:include>:动态包含:
page:引用被包含的页面的路径
主页面和被包含页面都单独进行翻译和编译,在执行时,由主页面调用方法来引用被包含页面。
<jsp:forward>:内部转发
<jsp:param>:在动态包含 和内部转发时传参数
<jsp:useBean>:使用JavaBean
<jsp:setProperty>:设置属性值
<jsp:getProperty>:取得属性值
<jsp:plugin>:在页面中嵌入APPLET
九个内置对象:可以直接用的对象
page this(Object):没有域对象的那三个方法的
request HttpServletRequest
session HttpSession
application ServletContext
response HttpServletResponse
config ServletConfig
exception Throwable 表示JSP页面所发生的异常,在错误页才起作用
out JspWriter
在实际运行时,此输出流的缓冲区内容会追加到PrintWriter输出流的缓冲区后面。所以实际得到的页面内容和代码的执行顺序不一样。
pageContext PageContext JSP的页面容器
操作域(操作所有四个域)
setAttribute(String name , Object value [ , int scope ] )
注意:如果最后一个整型 参数不指定,则操作的是Page域。如果指定,则只操作指定的域。
findAttribute(Stringname):在四个域中从小到大挨个查找名为“hi”的属性,找到即返回
得到其它内置对象:给其它框架用的。框架在完成功能时,需要传入页面中的某些内置对象,此时,只需要传入pageContext即可,可以通过此对象再去取得其它内置对象,从而减少传参的数量。
总结:
JSP:一种Java语言实现的动态页面技术。本质是Servlet。和servlet的区别:
JSP是在页面的静态内容中嵌入Java代码(Servlet是用输出流输出页面内容)
JSP文件是和静态资源保存在一起的,Servlet是编译后保存在WEB-INF/classes中,所以JSP可以直接访问,而Servlet不能直接访问。
不需要在web.xml中注册。
JSP是在第一次被访问时,进行了翻译和编译,之后执行的。
三种脚本:
<%Java代码 %>
<%=表达式 %>
<%!声明 %>
三种注释
JSP的注释:<%-- --%>:翻译即消失
Java的注释:// /**/:编译才消失
标记语言的注释:<!-- -->:永远不消失
三个编译指令
<%@page%>:设置当前JSP页面中的信息(字符集、内容类型、使用语言、错误处理页)
contentType
import
errorPage
isErrorPage
<%@include%>:静态包含(主页面在翻译时,把被包含页面合并到主页面中进行翻译和编译)
file
<%@taglib%>
七个动作指令
<jsp:include>:动态包含(主页面和被包含页面各自进行翻译和编译执行,在执行时,通过调用include方法把被包含页面包含到主页面中)
page
九个内置对象
page:当前页面
request:请求
session:会话
application:ServletContext
response:响应
config:ServletConfig
out:JspWriter
exception:异常对象(isErrorPage=true,必须是某个页面发生异常转跳过来的此对象才有值,否则为null)
pageContext:操作Page域
JSTL和EL(替代JSP中的Java代码的)
- jsp服务端页面技术
- JSP服务端页面技术:JSP的简介与运行原理
- JSP动态页面技术
- jsp动态页面技术
- 动态页面技术(jsp)
- jsp页面技术混合
- JSP--动态页面技术
- JSP页面跳转技术
- JSP概述和页面技术
- JSP页面分页技术实现
- JSP页面翻页技术的实现
- JSP/Servlet的页面重定向技术
- 容器外的JSP页面测试技术
- JSP技术生成动态web页面
- 能用JSP技术创建XML页面吗?
- 能用JSP技术创建XML页面吗?
- JSP页面缓存技术浏览器缓存
- JSP页面缓存技术--浏览器缓存(转)
- Cookie&Session会话技术&Servlet三个作用域总结
- redis的配置
- CRT detected that the application wrote to memory after end of heap buffer
- Error:Execution failed for task ':app:transformDexArchiveWithExternalLibsDex报错
- 理解了自己的工作
- jsp服务端页面技术
- 实现RTSP摄像机进行网页直播和微信直播的技术方案:EasyNVR更新方法
- test_iter TRAIN_ batch_size TEST_ batch_size
- 请求和响应response&request
- freemarker添加新闻和查询新闻的小案例
- 4种mysql存储引擎比较详解
- 小狗的状态
- 交换机(链路层传输介质)
- ImgeLoader网络请求图片数字。