什么是jsp?

大家好,我是IT修真院成都分院第13期java学员。
今天给大家分享一下关于java中什么是jsp的相关知识。

1.背景介绍

JSP(Java Server Page)中文是java服务器页面,是一种动态网页开发技术。它使用JSP标签在HTML网页中插入Java代码。标签通常以<%开头以%>结束。

JSP的根本是一种Java servlet,主要用于实现Java

web应用程序的用户界面部分。网页开发者们通过结合HTML代码、XML元素以及嵌入JSP操作和命令来编写JSP。

JSP通过网页表单获取用户输入数据、访问数据库及其他数据源,然后动态地创建网页。

2.知识剖析

servlet是什么?

Servlet是J2EE规范中的一种,主要是为了扩展java作为web服务的功能,Servlet是J2EE规范中的一种,主要是为了扩展java作为web服务的功能。

Sun公司在其API中提供了一个servlet接口,用户若想用发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:1、编写一个Java类,实现servlet接口。2、把开发好的Java类部署到web服务器中

servlet的工作流程

首先接收到客户端的请求,然后去判断是否存在servlet实例,如果不存在的话就先创建servlet实例,然后进行初始化,再去调用Service的方法,由service()方法根据提交的方式选择执行doGet()或者doPost()方法。如果存在的话就直接去掉用Service的方法。这也是servlet的一个优势,就是只需要创建一次servlet实例。

当Web服务器认为Servlet实例没有存在的必要了,比如应用重新装载,或服务器关闭,以及Servlet很长时间都没有被访问过。服务器可以从内存中销毁(也叫卸载)该实例。

jsp工作原理是什么?

(1)当客户第一次请求JSP页面时,JSP引擎会通过预处理把JSP文件中的静态数据(HTML文本)和动态数据(Java脚本)全部转换为Java代码。

(2)JSP引擎把生成的.java文件编译成Servlet类文件(.class)。对于Tomcat服务器而言,生成的类文件默认的情况下存放在\work目录。

(3)编译后的class对象被加载到容器中,并根据用户的请求生成HTML格式的响应页面。

需要注意的是,JSP文件不是在服务器启动的时候转换成Servlet类的。而是在被客户端访问的时候才可能发生转换的(如JSP文件内容没有被更新等,就不再发生Servlet转换)。

3.常见问题

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

4.解决方案

1.可读性很差,<% ..%>将java代码和html都写在一起,并且还要尖括号的表达式,看起来很复杂难懂。

2.jsp难于调试,不能进行单元测试,不能进行debug,可维护性差。

3.jsp内写java代码,安全性低,代码都在jsp中可以被看到

5.编码实战

6.扩展思考

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

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

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

7.参考文献

参考一:http://www.blogjava.net/fancydeepin/archive/2013/09/30/fan_servlet.html

参考二:http://www.iteye.com/topic/574788

8.更多讨论
欢迎大家交流和讨论

问题:

1 jsp必须转换成Java类才可以运行吗,

是的,这个可以在Tomcat的文件目录里面可以看到,jsp页面是被转译成了java class文件加载的.

2 JSP和servlet区别

jsp是先部署后编译,而servlet是先编译后部署。我们通常的热部署也是基于此。

3 JSP的缺点

1.增大了服务器的压力
2.前端与后端未脱离,拖慢开发进度
3.过于依赖java运行环境
4.复用较低。

鸣谢
感谢大家观看

BY : 杨腾东

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值