动态网页技术

JSP的执行过程

JSP运行过程中,首先由客户端发出请求,Web服务器接收到请求后,如果是第一次访问某个jsp页面,Web服务器对它进行以下3个操作。

  1. 1.         翻译:由.jsp变为.java,JSP引擎实现。

  2. 2.         编译:由.java变为.class, Java编译器实现。

  3. 3.         执行:由.class变为.html,Java虚拟机执行编译文件,然后将执行结果返回给Web服务器,并最终返回给客户端

如果不是第一次访问某个JSP页面,则只执行第三步。所以第一次访问JSP较慢。

3.JSP的9个内置对象及其含义,分别写出其常用方法三个

wKiom1Q1ICzyi9_oAAE5ul3N9Uw700.jpg



常用方法略

4.page/request/session/application的范围区别

page:当前页面范围

request:当前页面范围+转发页面(forward+包含页面(include

session:当前会话:session在以下几种情况下失效

  1. 1.         销毁sessionSession.invalidate();

  2. 2.         超过最大非活动间隔时间

  3. 3.         手动关闭浏览器(session并没有立刻失效,因为服务器端session仍旧存在,超过最大非活动间隔时间后真正失效)

  4. 4.         application:当前应用;服务器重新启动前一直有效

  5. 5.get和post的区别

  6. 1.         Get是不安全的,因为在传输过程,数据被放在请求的URL中;Post的所有操作对用户来说都是不可见的。

  7. 2.         Get传送的数据量较小,这主要是因为受URL长度限制;Post传送的数据量较大,一般被默认为不受限制。

  8. 3.         Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

  9. 4.         Get执行效率却比Post方法好。Getform提交的默认方法。

  10. 6.Servlet的生命周期

  11. 1.         加载:在下列时刻加载 Servlet:(1)如果已配置自动加载选项,则在启动服务器时自动加载 (web.xml中设置<load-on-start>);(2)在服务器启动后,客户机首次向Servlet 发出请求时;3)重新加载 Servlet 时(只执行一次)

  12. 2.         实例化:加载 Servlet 后,服务器创建一个 Servlet 实例。(只执行一次)

  13. 3.         初始化:调用 Servlet  init() 方法。在初始化阶段,Servlet 初始化参数被传递给 Servlet 配置对象ServletConfig(只执行一次)

  14. 4.         请求处理:对于到达服务器的客户机请求,服务器创建针对此次请求的一个“请求”对象和一个“响应”对象。服务器调用 Servlet  service() 方法,该方法用于传递“请求”和“响应”对象。service() 方法从“请求”对象获得请求信息、处理该请求并用“响应”对象的方法以将响应传回客户机。service() 方法可以调用其它方法来处理请求,例如 doGet()doPost() 或其它的方法。(每次请求都执行该步骤)

  15. 5.         销毁:当服务器不再需要 Servlet, 或重新装入 Servlet 的新实例时,服务器会调用 Servlet  destroy() 方法。(只执行一次)

  16. 2.JSP和Servlet的区别和联系

区别

  1. 1.         JSP是在HTML代码里写JAVA代码,框架是HTML;Servlet是在JAVA代码中写HTML代码,本身是个JAVA类。

  2. 2.         JSP使人们把显示和逻辑分隔成为可能,这意味着两者的开发可并行进行;而Servlet并没有把两者分开。

  3. 3.         Servlet独立地处理静态表示逻辑与动态业务逻辑.这样,任何文件的变动都需要对此服务程序重新编译;JSP允许用特殊标签直接嵌入到HTML页面, HTML内容与JAVA内容也可放在单独文件中,HTML内容的任何变动会自动编译装入到服务程序.

  4. 4.         Servlet需要在web.xml中配置,而JSP无需配置。

  5. 5.         目前JSP主要用在视图层,负责显示,而Servlet主要用在控制层,负责调度

 

联系:

都是Sun公司推出的动态网页技术。

先有Servlet,针对Servlet缺点推出JSP

JSPServlet的一种特殊形式,每个JSP页面就是一个Servlet实例——JSP页面由系统翻译成ServletServlet再负责响应用户请求。

7.session和cookie的区别

1、联系

http是无状态的协议,客户每次读取web页面时,服务器都打开新的会话,而且服务器也不会自动维护客户的上下文信息,那么要怎么才能在多次请求之间共享信息呢(比如实现网上商店中的购物车)?sessioncookie就是为了解决HTTP协议的无状态而采用的两种解决方案。

2、原理(通过比喻形象说明,真正原理自己总结)

n  Cookie:发给顾客一张卡片,上面记录着消费的数量,一般还有个有效期限。每次消费时,如果顾客出示这张卡片,则此次消费就会与以前或以后的消费相联系起来。这种做法就是在客户端保持状态。【卡上记录所有信息,而店家只认卡不认人。】

n  Session:发给顾客一张会员卡,除了卡号之外什么信息也不纪录,每次消费时,如果顾客出示该卡片,则店员在店里的纪录本上找到这个卡号对应的纪录添加一些消费信息。这种做法就是在服务器端保持状态。【只记用户ID,而ID的详细记录放在店家的数据库里;每次凭ID检索服务器的记录。】

3、区别

n  cookie数据存放在客户的浏览器上,session数据放在服务器上(sessionid可以通过cookie保存在客户端,也可以使用URL重写方式)。

n  cookie不是很安全,别人可以分析存放在本地的COOKIE并进行COOKIE欺骗,考虑到安全应当使用session

n  session会在一定时间内保存在服务器上。当访问增多,会比较占用你服务器的性能,考虑到减轻服务器性能方面,应当使用COOKIE

n  单个cookie在客户端的限制是3K,就是说一个站点在客户端存放的COOKIE不能3K

n  个人建议:将登陆信息等重要信息存放为SESSION;其他信息如需保留,可放在COOKIE

8.转发和重定向的区别

转发是在服务端直接做的事情,是对客户端的同一个request进行传递,浏览器并不知道。重定向是由浏览器来做的事情。重定向时,服务端返回一个response,里面包含了跳转的地址,由浏览器获得后,自动发送一个新request转发像呼叫转移或者110报警中心,重定向似114查号台

wKioL1Q1ICSTPNqIAAEZ-kvbNm0541.jpg 

u区别1:跳转效率的不同

n  转发效率相对高;重定向效率相对低

u区别2:实现语句不同

n  转发request.getRequestDispatcher("xxxx").forward(request,response) ;

n  重定向 response.sendRedirect("xxxx")

u区别3:是否共有同一个request的数据

n  转发源组件与目标组件共有同一个request数据

n  重定向源组件与目标组件不共有同一个request数据(可使用session共有数据)

u区别4:浏览器URL地址的不同

n  转发后浏览器URL地址保持不变(源组件地址)

n  重定向后浏览器URL地址改变为重定向后的地址(目标组件地址)

u区别5:"/"路径的含义不同

n  转发时"/"代表当前项目的根路径;重定向时"/"代表当前服务器的根路径

u区别6:跳转范围的不同

n  只能转发到同一应用中的URL(默认);可以重定向任何服务器、任何应用的URL

u区别7:刷新是否导致重复提交

n  转发会导致重复提交(可以通过同步令牌解决);重定向不会导致重复提交

u区别8:是否经过过滤器

n  转发不经过过滤器(默认情况);重定向经过过滤器

9.MVC模式及其优缺点

wKiom1Q1H-WiizjlAADv5VEzHI0661.jpg


一、MVC原理

MVC是一种程序开发设计模式,它实现了显示模块与功能模块的分离。提高了程序的可维护性、可移植性、可扩展性与可重用性,降低了程序的开发难度。它主要分模型、视图、控制器三层。

1、模型(model)它是应用程序的主体部分,主要包括业务逻辑模块和数据模块。模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性

2、视图(view) 用户与之交互的界面、在web中视图一般由jsp,html组成

3、控制器(controller)接收来自界面的请求并交给模型进行处理在这个过程中控制器不做任何处理只是起到了一个连接的作用

 

二、MVC的优点

1、降低代码耦合性。在MVC模式中,三个层各施其职,所以如果一旦哪一层的需求发生了变化,就只需要更改相应的层中的代码而不会影响到其他层中的代码。

2、有利于分工合作。在MVC模式中,由于按层把系统分开,那么就能更好的实现开发中的分工。网页设计人员可进行开发视图层中的JSP,而对业务熟悉的人员可开发业务层,而其他开发人员可开发控制层。

3、有利于组件的重用。如控制层可独立成一个能用的组件,表示层也可做成通用的操作界面。可以为一个模型在运行时同时建立和使用多个视图。

 

三、MVC的不足之处

1、增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

2、视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。

3、视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

4、目前,一般高级的界面工具或构造器不支持模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。

10.B/S和C/S的含义及其区别

C/S结构,即Client/Server(客户机/服务器)结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,可充分利用两端硬件环境优势。早期软件系统多以此作为首选设计标准。

B/S结构,即Browser/Server(浏览器/服务器)结构,是随着Internet技术的兴起,对C/S结构的一种变化或者改进的结构。在这种结构下,用户界面完全通过WWW浏览器实现,一部分事务逻辑在前端实现,但是主要事务逻辑在服务器端实现,节约了开发成本,便于软件维护。

 

区别

1C/S是建立在局域网的基础上的。B/S是建立在广域网的基础上的,但并不是说B/S结构不能在局域网上使用。

2B/S业务扩展简单方便,通过增加页面即可增加服务器功能。C/S的客户端还需要安装专用的客户端软件,不利于扩展。

3B/S维护简单方便。开发、维护等几乎所有工作也都集中在服务器端,当企业对网络应用进行升级时,只需更新服务器端的软件就可以,这减轻了异地用户系统维护与升级的成本。。   

4B/S响应速度不及C/S

5B/S用户体验效果不是很理想

11.为什么要使用连接池?数据库连接池的原理。

wKioL1Q1IBODLpisAACyoJFx-Sg309.jpg

1、数据库连接池的原理。

      传统连接方式:

     首先调用Class.forName()方法加载数据库驱动,

     然后调用DriverManager.getConnection()方法建立连接.

      连接池技术:

     连接池解决方案是在应用程序启动时就预先建立多个数据库连接对象,然后将连接对象保存到连接池中。

     当客户请求到来时,从池中取出一个连接对象为客户服务。

     当请求完成时,客户程序调用close()方法,将连接对象放回池中.

     对于多于连接池中连接数的请求,排队等待。

     应用程序还可根据连接池中连接的使用率,动态增加或减少池中的连接数。

2、为什么要使用连接池?

      传统的数据库连接方式

     一个连接对象对应一个物理连接

     每次操作都打开一个物理连接,

     使用完都关闭连接,造成系统性能低下。

      连接池技术

     客户程序得到的连接对象是连接池中物理连接的一个句柄

     调用连接对象的close()方法,物理连接并没有关闭,数据源的实现只是删除了客户程序中的连接对象和池中的连接对象之间的联系.

      数据库连接的建立及关闭是耗费系统资源的操作,在大型应用中对系统的性能影响尤为明显。为了能重复利用数据库连接对象,缩短请求的响应时间和提高服务器的性能,支持更多的客户,应采用连接池技术.

12.EJB与JavaBean的区别?

Java Bean 是可复用的组件,对Java Bean并没有严格的规范,理论上讲,任何一个Java类都可以是一个Bean。但通常情况下,由于JavaBean是被容器所创建(如Tomcat)的,所以Java Bean应具有一个无参的构造器。另外,通常Java Bean还要实现Serializable接口用于实现Bean的持久性。Java Bean实际上相当于微软COM模型中的本地进程内COM组件,它是不能被跨进程访问的。

Enterprise JavaBean 相当于DCOM,即分布式组件。它是基于Java的远程方法调用(RMI)技术的,所以EJB可以被远程访问(跨进程、跨计算机)。但EJB必须被布署在诸如WebspereWebLogic这样的容器中,EJB客户从不直接访问真正的EJB组件,而是通过其容器访问。EJB容器是EJB组件的代理,EJB组件由容器所创建和管理。客户通过容器来访问真正的EJB组件。


本文转自  素颜猪  51CTO博客,原文链接:http://blog.51cto.com/suyanzhu/1561375
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值