广告联盟网站建设,网络营销企业有哪些公司,做男性服装的网站,怎么查看网站空间JSP核心技术
什么是JSP JSP全称是Java Server Pages#xff0c;它和servle技术一样#xff0c;都是SUN公司定义的一种用于开发动态web资源的技术。JSP/Servlet规范。JSP实际上就是Servlet JSP这门技术的最大的特点在于#xff0c;写jsp就像在写html#xff0c;但它相比htm…JSP核心技术
什么是JSP JSP全称是Java Server Pages它和servle技术一样都是SUN公司定义的一种用于开发动态web资源的技术。JSP/Servlet规范。JSP实际上就是Servlet JSP这门技术的最大的特点在于写jsp就像在写html但它相比html而言html只能为用户提供静态数据而Jsp技术允许在页面中嵌套java代码为用户提供动态数据
JSP最佳实践 不管是JSP还是Servlet虽然都可以用于开发动态web资源。但由于这2门技术有各自的特点servlet只负责响应请求产生数据并把数据通过转发技术带给jsp数据的显示交给jsp来做, 在长期的软件实践中人们逐渐把servlet作为web应用中的控制器组件来使用而把JSP技术作为数据显示模板来使用。
JSP语法 JSP模版元素 JSP表达式 JSP脚本片断 JSP注释 JSP指令 JSP标签 JSP内置对象 如何查找JSP页面中的错误
JSP模板元素 JSP页面中的HTML内容称之为JSP模版元素。 JSP模版元素定义了网页的基本骨架即定义了页面的结构和外观
JSP脚本表达式 JSP脚本表达式expression用于将程序数据输出到客户端 语法% 变量或表达式 % 举例当前时间:% new java.util.Date() % JSP脚本表达式中的变量或表达式后面不能有分号
JSP脚本片段 JSP脚本片断用于在JSP页面中编写多行Java代码。 语法 % 多行java代码 % 注意 JSP脚本片断中只能出现java代码不能出现其它模板元素 JSP脚本片断中的Java代码必须严格遵循Java语法例如每执行语句后面必须用分号;结束。 案例 1在jsp脚本中定义一个时间变量然后采用脚本表达式输出该变量 2循环打印100行的表格
JSP声明 JSP页面中编写的所有代码默认会翻译到servlet的service方法中,而Jsp声明中的java代码被翻译到_jspService方法的外面。语法 % java代码 % 观察生成的代码效果
JSP注释 JSP注释的格式 %-- 注释信息 --% JSP引擎在将JSP页面翻译成Servlet程序时忽略JSP页面中被注释的内容. 注意它与HTML中的注释有什么不同
JSP指令 JSP指令directive是为JSP引擎而设计的它们并不直接产生任何可见输出而只是告诉引擎如何处理JSP页面中的其余部分。在JSP 2.0规范中共定义了三个指令 page指令 include指令 taglib指令 JSP指令的基本语法格式 % 指令 属性名值 % 举例% page contentTypetext/html;charsetutf-8% 如果一个指令有多个属性这多个属性可以写在一个指令中也可以分开写。 % page contentTypetext/html; charsetutf-8 importjava.util.Date% 也可以这样写 % page contentTypetext/html;charsetutf-8% % page importjava.util.Date%
JSP的page指令 page指令用于定义JSP页面的各种属性无论page指令出现在JSP页面中的什么地方它作用的都是整个JSP页面为了保持程序的可读性和遵循良好的编程习惯page指令最好是放在整个JSP页面的起始位置。 JSP 2.0规范中定义的page指令的完整语法 % page [ import{package.class | package.*}, ... ] [ errorPagerelative_url ] [ isErrorPagetrue | false ] [ contentType text/html ; charsetISO-8859-1 ] % 可以在一条page指令的import属性中引入多个类或包其中的每个包或类之间使用逗号分隔 % page importjava.util.Date,java.sql.*,java.io.*% 上面的语句也可以改写为使用多条page指令的import属性来分别引入各个
include指令 include指令用于引入其它JSP页面如果使用include指令引入了其它JSP页面那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。 语法 % include file“被包含页面的绝对URL或相对URL% 其中的file属性用于指定被引入文件的路径。路径以“/”开头表示代表当前web应用。 细节 被引入的文件必须遵循JSP语法。 被引入的文件可以使用任意的扩展名即使其扩展名是htmlJSP引擎也会按照处理jsp 页面的方式处理它里面的内容 为了见明知意JSP规范建议使用.jspfJSP fragments作为静态引入文件的扩展名。 案例 网页头部显示当前时间这个头部信息需要复用那么就可以在多个页面进行引入操作 PageEncoding是jsp翻译成Java文件时用到的编码格式 ContentType是指服务器给客户端响应时的内容编码
taglib指令 taglib指令用于在JSP页面中导入标签库 % taglib urihttp://java.sun.com/jsp/jstl/core prefixc %
JSP的内置对象 每个JSP 页面在第一次被访问时WEB容器都会把请求交给JSP引擎即一个Java程序去处理。JSP引擎先将JSP翻译成一个_jspServlet(实质上也是一个servlet) 然后按照servlet的调用方式进行调用。 由于JSP第一次访问时会翻译成servlet所以第一次访问通常会比较慢但第二次访问JSP引擎如果发现JSP没有变化就不再翻译而是直接调用所以程序的执行效率不会受到影响。 JSP引擎在调用JSP对应的_jspServlet时会传递或创建9个与web开发相关的对象供_jspServlet使用。JSP技术的设计者为便于开发人员在编写JSP页面时获得这些web对象的引用特意定义了9个相应的变量开发人员在JSP页面中通过这些变量就可以快速获得这9大对象的引用。 这9个对象分别是哪些以及作用也是笔试经常考察的知识点。 request -- HttpServletRequest response -- HttpServletResponse config -- ServletConfig application -- ServletContext exception只有在page指令中具有属性isErrorPagetrue时才有效-- Exception session -- HttpSession page -- 当前类 out -- JspWriter pageContext -- PageContext
pageContext对象和作用域 pageContext对象是JSP技术中最重要的一个对象它代表JSP页面的运行环境这个对象不仅封装了对其它8大隐式对象的引用它自身还是一个域对象可以用来保存数据 getException方法返回exception隐式对象 getPage方法返回page隐式对象 getRequest方法返回request隐式对象 getResponse方法返回response隐式对象 getServletConfig方法返回config隐式对象 getServletContext方法返回application隐式对象 getSession方法返回session隐式对象 getOut方法返回out隐式对象 pageContext封装其它8大内置对象的意义
pageContext作为域对象 pageContext对象的方法 public void setAttribute(java.lang.String name,java.lang.Object value) public java.lang.Object getAttribute(java.lang.String name) public void removeAttribute(java.lang.String name) pageContext对象中还封装了访问其它域的方法 public java.lang.Object getAttribute(java.lang.String name,int scope) public void setAttribute(java.lang.String name, java.lang.Object value,int scope) public void removeAttribute(java.lang.String name,int scope) 代表各个域的常量 PageContext.APPLICATION_SCOPE PageContext.SESSION_SCOPE PageContext.REQUEST_SCOPE PageContext.PAGE_SCOPE
JSP标签 JSP标签也称之为Jsp Action(JSP动作)元素它用于在Jsp页面中提供业务逻辑功能避免在JSP页面中直接编写java代码造成jsp页面难以维护。 jsp:include标签 jsp:forward标签 jsp:param标签
jsp:include标签 jsp:include标签用于把另外一个资源的输出内容插入进当前JSP页面的输出内容之中这种在JSP页面执行时的引入方式称之为动态引入。 语法 jsp:include pagerelativeURL / page属性用于指定被引入资源的相对路径
jsp:include与include指令的比较 一个是动态导入一个是静态导入
jsp:forward标签 jsp:forward标签用于把请求转发给另外一个资源。 语法 jsp:forward pagerelativeURL | %expression% / page属性用于指定请求转发到的资源的相对路径
jsp:param标签 当使用jsp:include和jsp:forward标签引入或将请求转发给其它资源时可以使用jsp:param标签向这个资源传递参数。 语法1 jsp:include pagehhy.jsp | %expression% jsp:param nameparameterName valueparameterValue|% expression % / /jsp:include 语法2 jsp:forward pagerelativeURL | %expression% jsp:param nameparameterName valueparameterValue|% expression % / /jsp:forward
EL EL表达式expression language 表达式语言 它不是一种开发语言是jsp中获取数据的一种规范 注意EL表达式查找的范围顺序以及如何获取请求的参数信息 案例一 %-- JSP脚本来存放值然后采用EL表达式来获取值 --% % request.setAttribute(el, 来自request域存放的数据); % %-- 通过EL表达式获取该值 --% ${el} %request.getAttribute(el) % 通过设置多个区域的数据来观察EL表达式获取值的顺序 另外怎样采用EL表达式获取到请求参数 案例二 EL表达式对于null情况的处理即不存在对应的key时是怎么显示的 案例三 属性导航对象获取属性获取List的元素获取Map的元素 % Book book new Book(1001,Java探索之旅,99.9); request.setAttribute(book, book); % ${book.bookName} % ListBook list new ArrayListBook(); list.add(new Book(1001,Java探索之旅,99.9)); list.add(new Book(1002,技术探索之旅,199.9)); list.add(new Book(1003,宇宙探索之旅,999.9)); request.setAttribute(list, list); % ${list[0].bookName} % MapString,String map new HashMapString,String(); map.put(1001, 目标一每天比昨天懂得多一点); map.put(1002, 目标二每个星期有一个专项的提升); map.put(1003, 目标三每个月有一个系统的提升); request.setAttribute(map, map); % ${map[1001]} 案例四 三元运算符结合结果来做信息提示 ${empty cart} ${empty cart ? 您的购物车尚无商品 : 您的购物车商品信息如下 } 数据的回显 % request.setAttribute(sex, 1); % input typeradio namesex value1 ${sex1 ?checkedchecked : }/男 input typeradio namesex value0 ${sex0 ? checkedchecked : }/女 JSTL 什么是JSTL JSTLJavaServerPages Standard Tag LibraryJSP标准标签库 2、JSTL的作用 使用JSTL实现JSP页面中逻辑处理。如判断、循环等。 3、使用JSTL 1在JSP页面添加taglib指令 % taglib urihttp://java.sun.com/jsp/jstl/core prefixc% 2使用JSTL标签 c:if test${empty cart}您的购物车尚无商品/c:if 4、常用标签介绍 1通用标签: set、 out、 remove 2条件标签if choose 3迭带标签foreach 案例一实现普通for循环打印多个数字 案例二遍历一个集合数据并实现隔行换色的效果
格式化 首先引入 %taglib urihttp://java.sun.com/jsp/jstl/fmt prefixfmt% 案例一日期格式化 比如对象保存的属性为日期类型希望展示的结果是我们期望的日期格式 案例二格式化小数保留两位小数点 案例三百分比格式化