Java Web 基础理解(三)

18.什么是Servlet?

Servlet是使用Java Servlet应用程序接口(API)及相关类和方法的Java程序,所有的Servlet都必须要实现的核心接口是javax.servlet.servlet.每一个servlet都必须要直接或者间接实现这个接口,或者继承javax.servlet.GenericServlet或javax.servlet.HttpServlet.

Servlet主要用于处理客户端传来的Http请求,并返回一个响应。

19.doGet 和 doPost 方法有什么区别?

doGet:GET方法会把名值对追加在请求的URL后面。因为URL对字符数目有限制,进而限制了用在客户端请求的参数值的数目。并且请求中的参数值是可见的,因此,敏感信息不能用这种方式传递。

doPost:POST方法通过把请求参数值放在请求体中来克服GET方法的限制,因此,可以发送的参数的数目是没有限制的。最后,通过POST请求传递的敏感信息对外部客户端是不可见的。

20.JSP有哪些动作?分别是什么?

JSP共有以下6种基本动作

​ jsp:include :在页面被请求的时候引入的一个文件。

​ jsp:useBean:寻找或者实例化一个JavaBean

jsp:setProperty: 设置JavaBean的属性

jsp:getProperty: 输出某个JavaBean的属性

​ jsp:forward:把请求转到一个新的页面

​ jsp:plugin:根据浏览器类型为java插件生成OBJECT 或EMBED标记

21.JSP常用的指令

page:针对当前页面的指令。

​ include:包含另一个页面

​ taglib:定义和访问自定义标签

22.页面间对象传递的方法

request、session、application、cookie

23.JSP中动态INCLUDE与静态INCLUDE的区别。

动态include用于jsp:include动作实现<jsp:include page=“include.jsp” flush=“true”/> 它总是会检查所含文件的变化,适用于包含动态页面,并且可以带参数。

静态include 用include伪代码,不会检查所含文件的变化,适用于包含静态页面<%@include file=""%>

24.JSP的四大范围

JSP中的四种作用域包括page、request、session、application,具体来说:

page代表与一个页面相关的对象和属性。

request代表与Web客户机发出的一个请求相关的对象和属性。一个请求可能跨越多个页面,设计多个Web组件;需要在页面显示的临时数据可以置于此作用域。

session代表与某个用户与服务器建立的一次会话相关的对象和属性。跟某个用户相关的数据应该放在用户自己的session中。

application代表与整个Web应用程序相关的对象和属性,它实质上是跨越整个Web应用程序,包括多个页面、请求和会话的一个全局作用域。

25.BS与CS的联系与区别

1、硬件环境不同:

​ C/S 一般建立在专用的网络上,小范围里的网络环境,局域网之间再通过专门服务器提供链接和数据交换服务。

​ B/S建立在广域网之上的,不必是专门的网络硬件环境,例如电话上网,租用设备。信息自己管理,有比C/S更强的适应范围;一般只要有操作系统和浏览器就行。

2.对安全要求不同

​ C/S 一般面对相对固定的用户群,对信息安全的控制能力很强。一般高度机密的信息系统采用C/S结构适宜。可以通过B/S发布部分可公开信息

B/S 建立在广域网之上,对安全的控制能力相对弱,可能面相不可知的用户。

3.对程序架构不同

​ C/S 程序可以更加注重流程,可以对权限多层次校验,对系统运行速度可以较少考虑。

​ B/S 对安全以及访问速度的多重的考虑,建立在需要更加优化的基础之上。比C/S有更高的要求B/S结构的程序架构是发展的趋势,从MS的.net系列的BizTalk2000 Exchange 2000等,全面支持网络的构建搭建的系统。SUN和IBM推荐的JavaBean构建技术等,使B/S更加成熟

4.软件重用不同

​ C/S 程序可以不可避免的整体性考虑,构建的重用性不如在B/S要求下的构建的重用性好。

​ B/S对的多重结构,要求构建相对独立的功能。能够较好的重用,就例如买来的餐桌可以再利用,而不是在墙上的石头桌子

5.系统维护不同

​ C/S程序由于整体性,必须整体考察,处理出现的问题以及系统升级。升级难。可能是在做一个全新的系统

​ B/S构建组成,方面构建个别的更换,实现系统无缝升级,系统维护开销减到最小。用户从网上自己下载安装就可以实现升级。

6.处理问题不同

​ C/S程序可以处理用户面固定,并且在相同区域,安全要求高需求,与操作系统相关。应该都是相同的系统

​ B/S建立在关于网上,面相不同的用户群内,分散地域,这是C/S无法做到的,与操作系统平台关系小。

7、用户接口不同

​ C/S多是建立的window平台上,表现方法有限,对程序员普遍要求较高

B/S建立在浏览器上,有更加丰富和生动的表现方式与用户交流。并且大部分难度减低,减低开发成本。

8、信息流不同

​ C/S程序一般是典型的中央集权的机械式处理,交互性相对低。

​ B/S信息流向可变化,B-B B-C B-G 等信息、流向的变化,更像交易中心。

26.说出Servlet的生命周期,并说出Servlet和CGI的区别?

Web容器加载Servlet并将其实例化后,Servlet生命周期开始,容器运行其Init方法进行Servlet的初始化,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX 方法(doGet、doPost)等,当服务器决定将实例销毁的时候调用其destroy方法。与cgi的区别在于servlet处于服务器进程中,它通过多线程方式运行其service方法,一个实例可以服务于多个请求,并且实例一般不会被销毁,而CGI对每个请求都产生新的进程,服务完成后就销毁,所以效率上地狱servlet.

27.如何防止表单重复提交

针对于重复提交的整体解决方案:

1.用redirect(重定向)来解决重复提交的问题

2.点击一次之后,按钮失效

3.通过loading(Loading原理是在点击提交时,生成Loading样式,在提交完成之后隐藏该样式)

4.自定义重复提交过滤器

28.request的作用

1、获取请求参数 getParamter()

2、获取当前web引用的虚拟路径getContextPath

3、转发

4、是一个域对象

29.get请求中文乱码

1、乱码的根本原因

​ 浏览器的编码方式UTF-8 和 服务器的解码方式ISO-859-1 不一样

2、解决方法:

​ 1)第一种方式 使用URLEncoder 和 URLDecoder 两个类 编解码。先以 iso-8859-1 进行编码,然后再以utf-8进行解码

​ 2)第二种方式 使用String 类的方法案进行编解码

​ 3)第三种方式 更改 server.xml配置文件

​ GET 请求是在URL地址栏中传递请求参数的,它会被Tomcat服务器自动解码,而Tomcat服务器默认的字符集也是ISO-8859-1,

所以我们需要修改Tomcat服务器的字符集为UTF-8

30.post请求中文乱码问题

1、post请求方式乱码的原因是:因为post是以二进制流的形式发送到服务器。服务器收到数据后。默认iso-8859-1进行编码。

2、post请求乱码解决,只需要在获取请求参数之前调用

​ request.setCharacterEncoding(“UTF-8”); 方法设置字符集 即可。

31.响应乱码

1、原因 由服务器编码,默认使用ISO-8859-1进行编码

​ 由浏览器解码,默认使用GBK进行解码

2、解决方案

​ 方法1:设置响应头

​ response.setHeader(“Contexnt-Type”,“text/html;charset=utf-8”)

​ 方法2:设置响应的内容类型

​ response.setContentType(“text/html;charset=utf-8”)

通过这种方式可以在响应头中告诉浏览器相应体的编码方式是UTF-8;同时服务器也会采用该字符集进行编码

但需要注意的是两种方法,一定要在response.getWriter()之前进行。

32、Cookie对象的缺陷

1、Cookie是明文的,不安全的

2、不同浏览器对Cookie对象的数量和大小有限制

3、Cookie对象携带过多费流量

4、Cookie对象中的value值只能是字符串,不能放对象

网络中传递数据只能是字符串

33.Session的运行机制

1、在服务器端创建Session对象,该对象有一个全球唯一的ID

2、在创建Session对象的同事创建一个 特殊的Cookie对象,该Cookie对象的名字是JSESSIONID,该Cookie对象的value值是Session对象的那个全球唯一的ID,并且会将这个特殊的Cookie对象携带发送给浏览器

3、以后浏览器在发送请求就会携带这个特殊的Cookie对象

4、服务器根据这个特殊的Cookie对象的value值在服务器中寻找对应的Session对象,以此来区分不同的用户。

34.钝化和活化

1、Session和session域中的对象一起从内存中被序列化到硬盘上的过程我们称之为钝化。服务器关闭时会发生钝化。

2、Session与session域中的对象一起从硬盘上反序列化到内存中的过程我们称为活化。服务器再次开启时会发生活化。

3、要保证session域中的对象能和Session一起被钝化和活化,必须保证对象对应的类实现Serializable接口

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值