【修真院java小课堂】什么是jsp?

大家好,我是IT修真院郑州分院第11期的JAVA学员周宏浩,一枚正直纯洁善良的java程序员。

今天给大家分享一下,什么是jsp?。

1.背景介绍

JSP全名为Java Server Pages,中文名叫java服务器页面,JSP是一种动态页面技术,它的主要目的是将表示逻辑从Servlet中分离出来。它实现了Html语法中的java扩展(以 <%, %>形式)。

JSP的根本是一种Java servlet,主要用于实现Java web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

2.知识剖析

1.jsp工作原理是什么?

1)当客户第一次请求JSP页面时,JSP引擎会通过预处理把JSP文件中的静态数据(HTML文本)和动态数据(Java脚本)全部转换为Java代码。
2)JSP引擎把生成的.java文件编译成Servlet类文件(.class)。对于Tomcat服务器而言,生成的类文件默认的情况下存放在\work目录。
3)编译后的class对象被加载到容器中,并根据用户的请求生成HTML格式的响应页面。

2.jsp九大内置对象

1)request内置对象是最常用的对象之一,它代表的是java.servlet.HttpServletRequest类的对象。request内置对象中包含了有关浏览器请求的信息,并提供了多个用于获取cookie、header以及session内数据的方法。

2)response对象与request对象相对应,它是用于响应客户请求,向客户端输出信息。response是javax.servlet.HttpServletResponse类的对象。response对象提供了多个方法用来处理HTTP响应,可以调用response中的方法修改ContentType中的MIME类型以及实现页面的跳转等。

3)page对象有点类似于Java编程中的this指针,就是指当前JSP页面本身。page是java.lang.Object类的对象。

4)session是与请求有关的会话期,它是java.servlet.http.HttpSession类的对象,用来表示和存储当前页面的请求信息。

5)application是javax.servlet.ServletContext类对象的一个实例,用于实现用户之间的数据共享,application 对象可将信息保存在服务器中,直到服务器关闭,否则application对象中保存的信息会在整个应用中都有效。

6)out 对象用于在Web浏览器内输出信息,并且管理应用服务器上的输出缓冲区。在使用 out 对象输出数据时,可以对数据缓冲区进行操作,及时清除缓冲区中的残余数据,为其他的输出让出缓冲空间。待数据输出完毕后,要及时关闭输出流。

7)exception内置对象是用来处理页面出现的异常错误,它是java.lang.Throwable类的一个对象。Jsp页面文件必须在isErrorPage=true的情况下才可以使用该对象;该对象一般配合Page指令一起使用,通过指定某个页面为错误处理页面,把所有的错误都集中到那个页面进行处理,可以使整个系统的性能得到加强。

8)config内置对象是ServletConfig类的一个实例。在Servlet初始化的时候,JSP引擎通过config向它传递信息。这种信息可以是属性名/值匹配的参数,也可以是通过ServletContext对象传递的服务器的有关信息。

9)pageContext对象是一个比较特殊的对象。它相当于页面中所有其他对象功能的最大集成者,即用它可以访问到本页面中所有其他对象。

3.jsp四大作用域

1)如果把变量放到pageContext里,就说明它的作用域是page,它的有效范围只在当前jsp页面里。 从把变量放到pageContext开始,到jsp页面结束,你都可以使用这个变量。

2)如果把变量放到request里,就说明它的作用域是request,它的有效范围是当前请求周期。所谓请求周期,就是指从http请求发起,到服务器处理结束,返回响应的整个过程。在这个过程中可能使用forward的方式跳转了多个jsp页面,在这些页面里你都可以使用这个变量。

3)如果把变量放到session里,就说明它的作用域是session,它的有效范围是当前会话。只要用户不关浏览器,服务器就有办法知道这些请求是一个人发起的,整个过程被称为一个会话。

4)如果把变量放到application里,就说明它的作用域是application,它的有效范围是整个应用。application作用域里的变量,它们的存活时间是最长的,如果不进行手工删除,它们就一直可以使用。与上述三个不同的是,application里的变量可以被所有用户共用。

3.常见问题

1.jsp连接db及curd操作
2.jsp页面之间的引用及变量作用域

4.编码实战

5.扩展思考

1.JSP与HTML的区别

1) HTML能直接打开,jsp只能发布到Tomact等服务器上才能打开 。
2) 定义上HTML页面是静态页面可以直接运行,JSP页面是动态页它运行时需要转换成servlet。
3) 他们的表头不同,这个是JSP的头“ <%@ page language=”java” import=”java.util.*” pageEncoding=”gbk”%>”在表头中有编码格式和导入包等。
4) jsp中用<%%>就可以写Java代码了,而html没有<%%>。

2.为什么一般不建议在jsp中写java代码?

1) 可读性很差,<% ..%>将java代码和html都写在一起,并且还要尖括号的表达式,看起来很复杂难懂。
2) jsp难于调试,不能进行单元测试,不能进行debug,可维护性差。
3) jsp内写java代码,安全性低,代码都在jsp中可以被看到。

3.jsp中的<%@include…@%>和tiles有什么区别?

如果我们一个网站的布局基本一致,这个时候,我们最好定义一个模板,如layout.jsp包括header,footer,content;content下面又包含其他页面部分,如果我们不使用tiles,则在每个页面按位置 用include引入相关的页面,当页面布局发生改变的时候,我们去掉不需要的一部分,这个时候需要到每个页面上去删除相应的include语句;但如果我们采用tiles的话,就只需要更改layout.jsp就行了。

tiles为了规范网站布局,通过复用基础模板,其他页面继承基础模板这个机制,当有成千上万的页面的时候,tiles框架的页面管理机制使布局维护更简单。

6.参考文献

https://blog.csdn.net/kyi_zhu123/article/details/54381221
http://www.iteye.com/topic/574788
https://www.cnblogs.com/mengzhen123/p/5968831.html

7.更多讨论

1.JSP和servlet区别

jsp是先部署后编译,而servlet是先编译后部署。

2.JSP的缺点

(1)增大了服务器的压力。
(2)过于依赖java运行环境。
(3)复用较低。

3.EL表达式可以用在ajax中吗?

不能,EL表达式只能用在jsp页面中。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值