本期小编将带你走进JSP,学习到Java的前后端交互的时候,我们会接触到JSP,今天我们来学习一下JSP的一些内容: 1 JSP的由来 1.1 为什么有JSP规范 Servlet技术产生以后,在使用时最麻烦的是使用大量的out.print语句输出页面。这样的形式在系统变更、维护、预览效果时都不能方便快捷的完成任务,于是推出JSP这种技术,用来将Servlet中负责显示的语句抽取出来。 class xxxServlet{ ...service(){ ... out.println(''); ... out.println(''); ... 1.2什么是JSP Sun公司制定的一种服务器端动态页面技术的组件规范。 JSP是一个以“. jsp”为后缀的文件,在该文件中,主要是HTML和少量的Java代码。JSP文件会被容器转换成一个Servlet类,然后执行。 < html=""> java代码... 2. JSP编写规范 2.1 如何编写JSP step1:写一个以” .jsp”为后缀的文件 step2:在该文件中可以包含如下内容: - HTML(CSS、JavaScript)- 注释- Java代码- 指令- 隐含对象 2.2 JSP页面中的HTML 代码 作用:控制页面在浏览器中显示的效果 转译成Servlet时的规则:成为Servlet中的service()方法的out.write语句 2.3 JSP页面中的注释 语法: 1) HTML注释,注释中的内容如果包含Java代码,这些Java代码,会被忽略 2)<%-- 注释内容 --%> JSP特有的注释,如果注释的内容中出现Java代码,会被忽略 2.4 JSP页面中的Java代码 JSP页面中的Java代码,包含以下三种:
编写位置:页面的任意位置 作用:控制页面中可变内容的产生 2.5 JSP表达式 语法规则:<%= ... ... %> 合法内容: 变量、变量加运算符组合的表达式、有返回值的方法 转译成Servlet时的规则: 在service( )方法中用out.print语句输出该变量、表达式、方法的值 Eg: The square root of 5 is <%=Math.sqrt(5)%> 转换成 out.write(' The square root of 5 is ');out.write(Math.sqrt(5));out.write(' ');2.6 JSP小脚本 语法规则:<% ... ... %> 合法内容:能够写在方法里的Java代码片段都可以作为小脚本 转移成Servlet时的规则:原封不动成为Servlet类的service( )方法里面的一段代码 Eg: <% String name = request.getParameter('name'); if(name!=null && !name.equals('')){%> Your name is <%=name %> <% }%>转换成如下代码插入到service方法中 String name = request.getParameter('name'); if(name!=null && !name.equals('')){ out.write(' Your name is'); out.print(name); out.write(' ');前几天有私信我要Java的学习资料,我连夜整理了一些有深度的Java教程和参考资料,从入门到高级的都有,文件已经打包好了,正在学习Java的同学可以免费下载学习学习。文件下载方式:点击我的头像,关注后私信回复'资料”即可下载。首先把代码撸起来!首先把代码撸起来!首先把代码撸起来!重要的事说三遍,哈哈。 “编程是门手艺活”。什么意思?得练啊。 2.7 JSP声明 语法声明:<%! ... ... %> 合法内容:成员属性或成员方法的声明 转译成Servlet时的规则:成为JSP页面转译成的Servlet类中成员属性或成员方法 Eg: <%! public String getResult(){ //... }%> 将代码整体插入到Servlet类中 public class Index_JSP extends JSPBase{ public String getResult(){ //... } public void service()... } 2.8 JSP页面中的指令 语法规则:<% @指令名 属性=值 %> 常用指令:
作用:控制JSP 在转译成Servlet类时生成的内容 2.9 page指令 作用:用于导包、设置页面属性 Eg: <%-- 导包 --><%@ page import='java.util.*' %><%@ page import='java.util.*,java.sql.*' %><%-- 设置response.setContentType()方法的参数值 --><%@ page contentType = 'image/gif' %><%-- 设置容器读取该文件时的解码 --><%@ page pageEncoding='UTF-8' %> 2.10 include指令 作用:在JSP页面转换成Servlet时,能够将其他文件包含进来,可以包含JSP文件也可以是静态的HTML文件。 通过该语句能方便的在每一个JSP页面中包含导航栏、版权声明、logo等 语法: <%@ include file = 'url' %> Eg: <%@include file = 'header.html' %><%@include file = 'footer.html' %> 2.11 JSP页面中的隐含对象 什么是隐含对象? 容器自动创建,在JSP文件中可以直接使用的对象 作用:JSP预先创建的这些对象可以简化对HTTP请求,响应信息的访问 3. JSP运行原理 3. 1 JSP是如何运行的 3. 2 JSP是如何转换成Java 3. 3 如何将静态页面转化成动态页面 step1:拷贝静态页面代码到JSP页面 step2:添加page指令pageEncoding和contentType step3:修改页面内容与目标内容一致 step4:将需要动态生成的内容删除,替换为Java代码 4. 转发 4. 1 什么是转发 一个Web组件(Servlet/JSP)将未完成的处理通过容器转交给另一个Web组件继续完成 常见问题:一个Servlet获得数据之后(比如通过调用dao),将这些数据转发给一个JSP,由这个JSP来展现这些数据(比如,以表格的方式来展示) 4. 2 如何实现转发
4. 3 绑定数据到request对象 实现绑定 request.setAttribute(String name,Object obj); name : 绑定名 obj : 绑定值 读取绑定值 Object request.getAttribute(String name) 如果绑定名对应的值不存在,返回null 4. 4 获得转发器 RequestDispatcher rd = request.getRequestDispatcher(String path); path:转发的目的地,即将未完成的处理继续下去的另一个组件,比如一个JSP文件 4. 5 转发 实现转发:rd.forward(request,response); 通常情况下第2步和第3步合并为一行语句,如下: request.getRequestDispatcher(path).forword(request,response); 4. 6 转发的原理 4. 7 转发的特点 转发以后,地址栏不会发生变化。原因是转发的过程是发生在服务器内部的,浏览器并不知道。 转发的目的地必须是同一个应用内部的某个地址 转发所涉及的各个web组件会共享同一个request对象和response对象 注意:在forward之后的其他语句还会执行吗? 答:一定会执行,只要不报异常。 4. 8 转发和重定向的区别
5 JSP开发常见问题 5.1 异常处理 1)编程式的异常处理 使用转发跳转到指定页面进行提示说明 try{ //... ... }catch(Exception e){ request.getRequestDispatcher(url).forward(request,response); 2)容器中的声明式处理 step1:将异常抛给容器,但底层的错误提示不要返回给用户 注意:异常只允许抛service指定的异常,不能超出指定范围使用如下写法:throw new ServletException(e); step2:在web.xml文件中配置错误处理页面节点 5.2 路径问题 1)路径使用 2)相对路径
3)绝对路径
4)路径的处理技巧 在使用绝对路径时:
String request.getContextPath(); 谢谢阅读本文哦,如果喜欢本问可以收藏哦,让我们一起学习进步! |
|