Java Web(Servlet和JSP)

24 篇文章 0 订阅

1. Servlet与JSP

1.1 页面请求工作流程

基本页面访问请求的处理流程
在这里插入图片描述
1.用户通过浏览器输入连接地址请求所需的资源
2.浏览器接收用户的请求,将请求组成指定的格式发送到服务器端,客户端与服务器端之间通过HTTP完成具体的交互。请求的数据流中主要包含HTTP、请求方法(post、get)、请求的网址、请求一些参数。
3.服务器接收到客户端发来的请求,查找用户所需要的资源
4.服务器查找到用户请求的资源后,将资源返回客户端
5.服务器通过将响应消息组装成特定的消息格式返回给客户端,响应数据流主要有:状态编码、Content-type、响应消息的内容。
6.浏览器对html解析,将结果展现给用户

1.2 HTTP中的get和post方法的区别

1.get方法:从服务器端获取用户所需资源,将其作为响应返回给客户端,也可以向服务器上传数据。
2.post方法:提供比get方法更多地功能,除了能从服务器端获取资源,还可以向服务器上传数据。
两者区别:
1.使用get方法向服务器上传数据,一般将数据添加在URL后面,二者用?连接,各个变量之间用&连接。对URL的长度有限制,因此采用该方法能上传的数据量小,一般是1024byte。post方法通过http请求的附件进行,传送的数据量更大。
2.get方法上传的数据在URL后面,所以有安全隐患。post方法提交的数据在URL后面没有显示,对用户不可见,安全性好。

1.3 什么是Servlet

采用JAVA语言编写的服务器端程序,运行在web服务器中的servlet容器中,主要功能是提供请求\响应的web服务模式,生成动态web内容。
servlet的优点:
1.较好的可移植性,无需修改代码就可以部署在多种不同类型的web服务器上。
2.执行效率高,Servlet针对每个请求创建一个线程执行,有更短的响应时间。
3.功能强大,可以与web服务器进行交互
4.使用方便
5.可扩展性强
一个基本的Servlet程序的结构:
在这里插入图片描述
servlet处理客户端请求的如下步骤:
1.用户通过单击一个链接向servlet发起请求
2.web服务器接收到该请求后,将请求交给相应的容器处理,容器发现这是对servlet发起的请求后,容器此时创建HttpServletRequest和HttpServletResponse对象。
3.容器可以根据请求消息中的URL消息找到对应的servlet,针对该请求创建一个单独的线程,将2中创建的两个对象以参数的形式传入到创建的线程中去。
4.容器调用servlet的service方法完成对用户请求的响应,service方法调用doPost和doGet方法完成具体的响应任务,将生成的动态页面返给容器。
5.容器将响应消息编成http格式返回给客户端。
在这里插入图片描述

1.4 什么是Servlet生命周期

因为servlet没有main方法,整个生命周期都是由容器控制的。servlet的生命周期只有两种状态:未创建状态和初始化状态。两种状态的转换由3个重要的方法进行控制:init、service、destory。init方法是servlet生命的起点,用于创建或打开任何与servlet相关的资源以及执行初始化工作。service方法是servlet真正处理客户端传入的请求的方法,根据http请求方法将请求分分发到doGet\doPost方法。destory方法释放任何在init方法中打开的与servlet相关的资源。
在这里插入图片描述
servlet生命周期可以分为加载、创建、初始化、处理客户请求、卸载
1.加载:容器通过类加载器使用Servlet类对应的文件加载Servlet
2.创建:通过调用Servlet的构造函数来创建一个Servlet实例
3.初始化:通过init方法完成初始化工作,该方法只被调用一次,该方法在Servlet已被创建但向客户端提供服务之前调用的。
4.处理客户请求:servlet被创建后就可以为客户端提供服务。当有新的请求,容器会创建一个新的线程来处理该请求,调用Servlet的service方法完成客户端的请求,service根据请求的method属性的不同调用dopost或doget方法完成具体响应。
5.卸载:容器卸载servlet之前需要调用destroy方法,让servlet自己释放其占用的系统资源,当destroy方法被调用,容器不会再向这个servlet发送请求。destroy方法只被调用一次。如果容器需要改servlet,则需重新定义一个新的servlet实例。

1.5 JSP有哪些优点

jsp是一种动态技术标准,是嵌入了Java代码的html文件。该技术的引入的实现是让每个servlet只负责其对应的业务逻辑的处理,让jsp负责用户html显示,实现了业务逻辑和视图实现的分离。
在这里插入图片描述

1.6 JSP与Servlet有何异同

相同点:JSP可以被看做一个特殊的Servlet,只不过是对Servlet的扩展,只要是JSP可以完成的,servlet也可以完成。jsp页面最终被转换为servlet来运行,因此处理请求实际上是编译后的servlet。
不同点:
1.servlet的实现方式是在java中嵌入html代码,编写和修改html非常不便,因此适合做流程控制、业务处理;JSP的实现方式是在html中嵌入java代码,适合页面展示。
2.servlet中没有内置对象,JSP中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponce、HttpServlet对象得到。

1.7 如何使用JSP与Servlet实现MVC模型

在这里插入图片描述
MVC是模型(M)、视图(V)、控制器(C)的组合,目的是实现web系统的职能分工。模型层实现系统中的业务逻辑,一般使用JavaBean或EJB实现;视图层用于与用户的交互,用jsp实现;控制层是模型与视图之间的连接,将用户的请求分派并选择合适的视图来显示,也可以解释用户的输入并将其映射为模型层能够执行的操作。
1.模型(业务逻辑层)
表示企业数据和业务逻辑,是应用程序的主体部分。模型接收视图请求数据,返回最终的处理结果。业务模型的是MVC中最重要的。业务模型有一个很重要的模型就是数据模型,数据模型主要指实体对象的数据持久化。
2.视图(表示层)
视图是用户看到的并与之交互的界面,视图主要表现在以下两个方面:

  • 根据客户类型显示信息
  • 显示商业逻辑的(模型)的结构,而不关系信息如何获得何时获得

3.控制器(控制层)
控制器接收用户的输入并调用模型和视图完成用户请求。当用户单击web页面的超链接发送html表单时,控制器不输出任何东西,不执行任何处理,只接收请求并决定调用哪个模型处理请求,然后确定用哪个视图显示模型处理返回的数据。
MVC设计结构的优点:
1、低耦合:由于视图、模型和控制分离,使得修改任意一个层的代码,其他层都不需要被重新编译。
2、高重用性和可适用性:MVC模式允许使用各种不同样式的视图访问同一个服务器端的代码。
3、较低的生命周期成本
4、部署快速
5、可维护性
6、有利于软件工程化管理
JSP和Servlet实现的MVC模型:
在这里插入图片描述

1.8 Servlet中的forward和redirect的区别

这两个的功能是在不同功能的servlet之间进行跳转
1、forward:服务器内部的重定向,服务器直接访问目标地址的URL,将URL的响应内容读取过来,客户端并不知道,在客户端浏览器的地址栏不会显示转向后的地址,是原来的地址。在整个定向的过程中是同一个Request,因此forward将request的信息带到被定向的JSP或servlet中使用。
2、redirect:客户端的重定向,是完全的跳转,客户端浏览器会获得跳转后的地址,然后重新发送请求,因此浏览器中会显示跳转后的地址。由于这种方法比forward多一次网络请求,因此效率低。客户端的重定向可以通过设置特定的HTTP头或写javaScript实现。
在这里插入图片描述
一般情况下使用forward,但是在需要跳转到其他服务器上的资源,则必须使用redirect方法。
filter的作用以及主要的实现方法是什么:
使用户改变一个request并且修改一个response。filter不是servlet,不能产生一个response,能够在一个request到达servlet之前预处理request,在离开servlet时处理response。
filter的作用有如下几个:
1、在servlet被调用之前截获
2、在servlet被调用之前检查servlet request
3、根据需要修改request头和request数据
4、根据需要修改response头和response数据
5、在servlet被调用后截获

1.9 JSP内置对象有哪些

内置对象又称隐含对象,是指在不声明和不创建的情况下就可以被使用的一些成员变量。jsp有9个内置对象:request、response、pageContext、session、application、out、config(配置对象)、page、exception(例外对象)。

1.10 request对象主要有哪些方法

request对象是用来封装用户的请求数据的,当有请求到达服务器时,系统会创建一个request对象。在服务器进行处理时可以通过获取request对象的属性来获取用户的请求数据。还可以通过对request对象设置新的一些属性来实现在servlet与jsp之间跳转时传递一些参数的功能。
在这里插入图片描述
在这里插入图片描述

1.11 JSP有哪些动作

jsp使用动作实现动态插入文件、实现重定向和对JavaBean的引用功能。
在这里插入图片描述
在这里插入图片描述

1.12 JSP中include指令和include动作的区别

include的作用是用来在当前文件中引入另外一个文件,以便在当前文件中使用。include有两种使用方法:include指令和include动作。include指令的使用方法为:<% @ include file=“test.jsp”%>,动作的使用方法是:<jsp:include page=“test.jsp” flush=“true”><jsp:param name=“name” value=“value”/></jsp:include>
动作和指令的区别在于被调用的时间不同。指令是在编译阶段的,在编译时编译器把指令所指向目标文件的内容复制到指令所在的位置,替换指令,形成一个文件,运行时只有一个文件。动作是在运行时的,在主页面被请求时,才将用到的页面包含进来,涉及两个文件,类似于调用,更适合用于包含动态页面的情况。

1.13 会话跟踪技术有哪些

会话是指从客户端打开与服务器连接并发出请求到服务器响应客户端请求的全过程。会话跟踪是指对同一个用户对服务器的连接请求和接受响应的监视,由于客户端与服务器端之间是通过http进行通信,http不保存客户信息,一次响应完成之后连接就断开了,在下一次请求时,需要重新建立连接,等到建立完成后还需要判断是否是同一个用户。会话跟踪技术主要有如下4种:
1、page,代表与一个页面相关的对象和属性。一个页面由一个编译好的java servlet类表示。包括servlet和被编译成servlet的jsp页面。
2、request,代表与web客户端发送的一个请求相关的对象和属性。一个请求可能跨越多个页面,涉及多个web组件
3、session,代表与用于某个web客户端的一个用户体验相关的对象和属性,一个web会话经常跨越多个客户端请求。
4、application,代表与整个web应用程序相关的对象和属性,跨越多个web应用程序,包含多个页面、请求和会话。

1.14 web开发中如何指定字符串的编码

常用的主要有:ISO-8859-1、GB2312、GBK、UTF-8等。ISO-8859-1用来编码拉丁文,由单字节组成,GB2312、GBK编码简体中文,由单字节和双字节混合组成,UFT-8为国际标准编码方式。

1.15 什么是Ajax

Ajax是一种结合java、XML、JavaScript的技术,主要的目的是在不刷新页面的情况下通过与服务器进行少量的数据交互提高页面的交互性,减少响应时间,页面不需要在每次用户提交修改时重新加载。
该方法的优点:
1、该技术只向服务器发送并取回必须的数据内容,使得数据交互量大幅降低,从而降低服务器的网络负载
2、通过使用SOAP或其他一些基于XML的web service接口,在客户端采用JavaScript处理来自服务器的响应,降低web服务器的处理时间
3、有更短的响应时间
Ajax是客户端技术,核心是JavaScript对象xmlHttpRequest,该对象是一种支持异步请求的技术。

1.16 cookie和session的区别

cookie是在http下,服务器或脚本可以维护客户工作站上信息的一种方式。是由web服务器保存在用户浏览器上的小文件,包含用户的有关信息。session是指用来在客户端与服务器端之间保持状态的解决方法以及存储结构。
两者的区别如下:
1、cookie是在客户端保存状态,session是在服务器端保持状态的方法
2、cookie存放在客户端,所以安全性不够,session信息存放在服务器端,因此较为安全
3、cookie性能更高一些,session在一定时间内保存在服务器上,因此当访问量增多时会降低服务器性能
4、当个cookie保存的数据不能大于4kb,最多保存20个cookie,而session不存在该问题。

  • 3
    点赞
  • 1
    评论
  • 16
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页

打赏作者

加加大了

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值