JSP常用技术 | 您所在的位置:网站首页 › 动态编程技术jsp是实现了什么页面和什么页面的功能 › JSP常用技术 |
jsp
在如今前后端分离的环境下,jsp是一门比较老旧的技术。 什么是jsp Java Server Page: Java服务器端页面。用户角度看就是一个网页,从程序员角度看待是一个java类,它继承了servlet,所以可以直接说jsp就是一个Servlet。 为什么会有jsp? html 多数情况下用来显示静态内容 ,一成不变的。 但是有时候我们需要在网页上显示一些动态数据,html是不支持写java代码,JSP页面中可以嵌入JAVA代码,用于动态Web技术。 JSP原理服务器工作时tomcat的work目录:A:\1WorkF\Application\apache-tomcat-7.0.52\work 项目目录下:发现jsp页面转变成了Java程序! index_jsp.class index_jsp.java浏览器向服务器发送请求,不管访问什么资源,其实都是在访问Servlet!JSP最终也会被转换成为一个Java类即JSP 本质上就是一个Servlet 查看index_jsp.java //初始化 public void _jspInit() {} //销毁 public void _jspDestroy() {} //JSPService public void _jspService(HttpServletRequest request,HttpServletResponse response){} JSP语法指令导入依赖 javax.servlet.jsp.jstl jstl-api 1.2 provided taglibs standard 1.1.2 语法页面写java代码 1: 支持jsp表达式 2: 常用 java代码插入html代码 Hello,World 3:指令写法 page指令 language表明jsp页面中可以写java代码 contentType告诉浏览器这个文件是什么内容类型,以及使用什么编码 contentType=“text/html; text/html MIMEType 这是一个文本,html网页 charset=UTF-8” 编码 errorPage指的是错误的页面, 值需要给错误的页面路径 isErrorPage结合上面的errorPage 用于指定错误的时候跑到哪一个页面去。 那么这个isErroPage , 就是声明某一个页面到底是不是错误的页面。 pageEncodingjsp内容编码 extends用于指定jsp翻译成java文件后,继承的父类是谁,一般不用改。 import导包使用的,一般不用手写。 session值可选的有true or false,用于控制在这个jsp页面里面,能够直接使用session对象。 如果该值是true , 那么在代码里面会有getSession()的调用,如果是false : 那么就不会有该方法调用,也就是没有session对象了。在页面上自然也就不能使用session了。 include指令包含另外一个jsp的内容进来。 本页主体背后细节: 把另外一个页面的所有内容拿过来一起输出。 所有的标签元素都包含进来。 与之相同的效果 taglib指令 uri: 标签库路径 prefix : 标签库的别名 JSP 动作标签一览 包含页面 携带参数 指向页面 jsp:include jsp:forward前往哪一个页面。 jsp:param在包含某个页面的时候,或者在跳转某个页面的时候,加入这个参数。 < jsp:forward page="other02.jsp">在other02.jsp中获取参数 收到的参数是: JSP内置对象所谓内置对象,就是我们可以直接在jsp页面中使用这些对象。 不用创建。查看源码也能看到 PageContext PageContext Request HttpServletRequest Response HttpServletResponse Session HttpSession Application SerlvetContext config SerlvetConfig out JspWriter page 不用了解 Object exception Throwable 作用域对象 pageContextrequestsessionapplication表示这些对象可以存值,他们的取值范围有限定。 setAttribute和 getAttribute 使用作用域来存储数据 取出四个作用域中的值作用域范围大小: pageContext < request < session < application 作用域对象的范围pageContext 【PageContext】 作用域仅限于当前的页面。 还可以获取到其他八个内置对象。 request 【HttpServletRequest】 作用域仅限于一次请求, 只要服务器对该请求做出了响应。 这个域中存的值就没有了。 session 【HttpSession】 作用域限于一次会话(多次请求与响应) 当中。 application 【ServletContext】 整个工程都可以访问, 服务器关闭后就不能访问了。 其他内置对象out 【JspWriter】 response 【HttpServletResponse】 exception 【Throwable】 page 【Object】 —就是这个jsp翻译成的java类的实例对象 config 【ServletConfig】 EL表达式 ${ }为了简化在jsp里面写的那些java代码。 写法格式 ${表达式 } 如果从作用域中取值,会先从小的作用域开始取,如果没有,就往下一个作用域取。 一直把四个作用域取完。 1 取4个作用域存的值 可以不指定域对象直接 ${name} 取值 会按从小到大顺序先从page里面找,没有再去去request找,去session,去application 按普通手段取值 使用EL表达式取出作用域中的值 ${ pageScope.name } ${ requestScope.name } ${ sessionScope.name } ${ applicationScope.name } EL表达式更简单方式 ${name} 2 取出域中存的数组数组跟list集合都是有脚标的 按照脚标值 取即可 array[0] },${ array[1] },${ array[2] } 3 取出域中存的集合 list等有脚标的集合 ${ list[0]}, ${ list[1]} Map等无脚标集合 ${ map.name },${ map.age },${map["age.aa"] } 1. 使用EL表达式取出作用域中Map的值 ${map.name } , ${map.age } , ${map.address } , ${map["address.aa"] } 取值细节: 1 取值顺序从域中取值。 得先存值 1. 直接指定域对象,到这个作用域里面去找这个name ${ pageScope.name } 指定从session中取值 ${ sessionScope.name } 2 不指定域对象按顺序 先从page里面找,没有去request找,去session,去application ${name} 2 取值方式如果这份值是有下标的,那么直接使用[] ${ array[1] } --> 这里array说的是session.setAttribute("array",array)的name如果没有下标, 直接使用 .的方式去取 ${ u.name } , ${ u.age }一般使用EL表达式,用的比较多的,都是从一个对象中取出它的属性值,比如取出某一个学生的姓名。 EL表达式 的11个内置对象。${ 对象名.成员 } pageContext作用域相关对象 pageScoperequestScopesessionScopeapplicationScope头信息相关对象 headerheaderValues参数信息相关对象 param paramValues cookie 全局初始化参数 initParam JSTL全称 : JSP Standard Tag Library jsp标准标签库 简化jsp的代码编写。 替换 写法。 一般与EL表达式配合 使用1 导入依赖 2 引入标签库:在jsp页面上,使用taglib 指令。 3 注意: 如果想支持 EL表达式,那么引入的标签库必须选择1.1的版本,1.0的版本不支持EL表达式。 主要标签: ${user.name } ----${user.age } c:set ${sessionScope.name } c:if判断test里面的表达式是否满足,如果满足,就执行c:if标签中的输出 , c:if 是没有else的。 test:判断条件var:scope: 年龄大于了26岁... 年龄小于了26岁... ------------------------------ var 定义一个变量名 flag 去接收前面表达式的值,然后存在session域中 年龄大于了26岁... c:forEach begin从1 开始遍历到end10 ,var得到的结果 ,赋值给 i ,并且会存储到page域中, step , 增幅为2, ${i } ----------------------------------------------- ${user.name } ----${user.age } |
CopyRight 2018-2019 实验室设备网 版权所有 |