JavaWeb面试题1

2.1.1. C/S B/S 的区别

C/S:Client/Server,客服端/服务端架构,需要开发客户端、服务端,开发成本高,版本迭代两个端都需要升级;

B/S:Brower/Server,浏览器/服务端架构,只需要开发服务端即可,版本迭代只需要服务端升级,用户通过浏览器就可加载最新数据;

2.1.2. 详细描述 MVC 模式

基于 java 的 web 应用系统采用 MVC 设计模型,即用 Model(模型)、View(视图)和 Controller(控制)分离设计,这是目前 web 应用服务系统的主流设置方向。

Model:处理业务逻辑的模块。

View:负责页面显示,显示 Model 的处理结果给用户,主要实现数据到页面的转换过程。

Controller:负责每个请求的分发,把 Form 数据传递给 Model 进行处理,处理完成后,把处理结果返回给相应的

View 显示给用户。

2.1.3. Servlet JSP 的区别

JSP 是 servlet 技术的扩展,本质上就是 servlet 的简易方式。servlet 和 JSP 最主要的不同点在于,servlet 的应用逻辑是在 Java 文件中,并且完全从表示层中的 html 里分离开来,而 JSP 的情况是 Java 和 html 可以 组合成一个扩展名为 JSP 的文件。JSP 侧重于视图,servlet 主要用于控制逻辑。

2.1.4. servlet 的生命周期

1、init():Servlet 初始化方法,仅会执行一次。

2、service():Servlet 服务方法,主要接受请求,处理请求,响应请求。一旦有 request 请求,则会自动调用, 会执行多次。

3、destory():Servlet 销毁方法,释放资源。一般来说不会调用,只有当服务器关闭时,才会调用,且仅调用 一次。

2.1.5. forward redirect 的区别

1、请求转发实际只发生了一次请求,而重定向发生了两次请求;

2、请求转发可以通过 request 进行数据传递,而重定向因为产生了两个 request 对象无法进行数据传递;

3、请求转发浏览器地址栏 URL 不会发生变化,而重定向 URL 会发生变化;

4、请求转发只能转发至系统内部资源,而重定向既可以访问内部资源,也可以重定向到外部资源。

2.1.6. 实现会话跟踪的技术有哪些

由于 HTTP 协议本身是无状态的,服务器为了区分不同的用户,就需要对用户会话进行跟踪,简单的说就是为用户

进行登记,为用户分配唯一的 ID,下一次用户在请求中包含此 ID,服务器据此判断到底是哪一个用户。

cookie:cookie 有两种,一种是基于窗口的,浏览器窗口关闭后,cookie 就没有了;另一种是将信息存储在一个 临时文件中,并设置存在的时间。当用户通过浏览器和服务器建立一次会话后,会话 ID 就会随响应信息返回存储

在基于窗口的 cookie 中,那就意味着只要浏览器没有关闭,会话没有超时,下一次请求时这个会话 ID 又会提交给 服务器让服务器识别用户身份。会话中可以为用户保存信息。会话对象是在服务器内存中的,而基于窗口的 cookie 是在客户端内存中的。如果浏览器禁用了 cookie,那么就需要通过下面两种方式进行会话跟踪。当然,在使用 cookie 时要注意几点:首先不要在 cookie 中存放敏感信息;其次 cookie 存储的数据量有限(4k),不能将过多的内容存

储 cookie 中;再者浏览器通常只允许一个站点最多存放 20 个 cookie。当然,和用户会话相关的其他信息(除了会话 ID)也可以存在 cookie 方便进行会话跟踪。

HttpSession:在所有会话跟踪技术中,HttpSession 对象是最强大也是功能最多的。当一个用户第一次访问某个网站时会自动创建 HttpSession,每个用户可以访问他自己的 HttpSession。可以通过 HttpServletRequest 对象的 getSession 方法获得 HttpSession,通过 HttpSession 的 setAttribute 方法可以将一个值放在 HttpSession 中, 通过调用 HttpSession 对象的 getAttribute 方法,同时传入属性名就可以获取保存在 HttpSession 中的对象。与上面三种方式不同的是,HttpSession 放在服务器的内存中,因此不要将过大的对象放在里面,即使目前的 Servlet容器可以在内存将满时将 HttpSession 中的对象移到其他存储设备中,但是这样势必影响性能。添加到 HttpSession 中的值可以是任意 Java 对象,这个对象最好实现了 Serializable 接口,这样 Servlet 容器在必要的时候可以将其 序列化到文件中,否则在序列化时就会出现异常。

2.2.cookie session

2.2.1. cookie session 的区别

1、cookie 数据存放在客户端的浏览器上,session 数据放在服务器上。

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

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

4、单个 cookie 保存的数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie。

5、可以考虑将登陆信息等重要信息存放为 session,其他信息如果需要保留,可以放在 cookie 中。

2.2.2. session 的工作原理

session 的工作原理是客户端登录完成之后,服务器会创建对应的 session,session 创建完之后,会把 session 的 id 发送给客户端,客户端再存储到浏览器中。这样客户端每次访问服务器时,都会带着 sessionid,服务器拿到 sessionid 之后,在内存找到与之对应的 session 这样就可以正常工作了。

2.2.3. 如果客户端禁止 cookie 能实现 session 还能用吗

可以用,通过 url 重定向实现,session 只是依赖 cookie 存储 sessionid,如果 cookie 被禁用了,可以使用 url 中添加 sessionid 的方式保证 session 能正常使用。

2.2.4. cookie 浏览器禁止后,session 还有效么

1、session 会话,会以 key-value 的形式,将 session 会话对象保存在服务器的 session 池中

2、session池中,JSESSIONID作为key,session对象作为value,每次会话session会将JSESSIONID存入cookie, 下次请求则根据 cookie 中的 JSESSIONID,获取 session 会话对象。

3、如果浏览器 cookie 被禁用,则通过 URL 重定向的形式传递 JSESSIONID,实际上就是已 url 参数的形式直接拼接 JSESSIONID=XXXXXX,保证服务器可以根据请求中的 JESSONID 找到对应的 session 会话。

2.2.5. 多服务器共享 session

1、session 复制:

应用服务器开启 Web 容器的 session 的复制功能,在集群中的几台服务器之间同步 session 对象,这样一台服务器宕机不会导致 session 数据丢失。即每一台服务器都持有集群中所有的 session,每次访问仅从本机获取就可以了。

2、session 绑定:

Session 绑定可以利用负载均衡的源地址 Hash 算法实现,负载均衡服务器总是将来自同一个 IP 地址的访问分发到同一台服务器上。这样整个会话期间,用户所有的请求都来自一台服务器,保证了 Session 总是从这台服务器获取。

3、利用 Cookie 记录 Session:

这种管理方式将 Session 记录在客户端,每次请求服务器的时候,将 Session 放在请求中发送给服务器,服务器处理完成后再将修改后的 Session 响应给客户端。

4、session 服务器:

如果有这样一个服务器,可用性高、伸缩性好、性能也不错,对信息大小又没有限制,那它就是 Session 服务器。

利用独立部署的 Session 服务器统一管理 Session,应用服务器每次读写 Session 时,都访问 Session 服务器.

2.3.过滤器有哪些作用

1、可以验证客户是否来自可信的网络

2、可以对客户提交的数据进行重写编码

3、可以从系统里获得配置的信息

4、可以过滤掉客户某些不应该出现的词汇

5、验证客户是否登录

6、验证客户的浏览器是否支持当前的应用

7、可以记录系统的日志

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
JavaWeb面试题通常涉及JavaEE规范和相关技术的问题。以下是一些常见的JavaWeb面试题及其答案: 1. 什么是Servlet规范? Servlet规范是JavaEE规范的一部分,主要定义了用于扩展Java作为Web服务的功能的接口和类。它规范了Servlet接口、Filter接口、Listener接口、ServletRequest接口、ServletResponse接口等。Servlet规范由servlet-api.jar和jsp-api.jar这两个Jar文件提供支持。 2. 什么是Servlet和JSP的区别? Servlet和JSP都是JavaWeb开发中的技术,用于处理Web请求和生成动态内容。主要区别在于Servlet是基于Java的类,用于处理请求和生成响应,而JSP是一种将Java代码嵌入HTML中的技术,用于生成动态网页。Servlet可以在代码中直接编写Java逻辑,而JSP则允许在HTML页面中嵌入Java代码。 3. JavaWeb中的三大组件是什么? JavaWeb中的三大组件是Servlet、Filter和Listener。Servlet用于处理Web请求和生成响应,Filter用于对请求和响应进行过滤和修改,Listener用于监听Web应用程序的生命周期事件。这三个组件共同构成了JavaWeb应用的核心。 4. 在JSP中,有哪些无需创建就可以使用的对象? 在JSP中,无需创建就可以使用的对象有: - out对象:用于向客户端输出数据。 - request对象:封装了来自客户端的请求信息。 - response对象:封装了服务器的响应信息。 - exception对象:封装了JSP程序执行过程中的异常和错误信息。 - config对象:封装了应用程序的配置信息。 - page对象:指向了当前JSP程序本身。 - session对象:用于保存会话信息。 - application对象:代表了当前应用程序的上下文,可在不同用户之间共享信息。 - pageContext对象:提供了对JSP页面所有对象以及命名空间的访问。 希望以上内容能对你的面试准备有所帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Java基础面试题JavaWeb专题)](https://blog.csdn.net/qq_40695336/article/details/130597300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [java面试题Web篇](https://blog.csdn.net/weixin_52489114/article/details/122982656)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值