面试常问的Java Web题集

e1de7199d9eda43d24bbfed13c60f9ea5af3b6e8

对于我们大部分人而言,在进入自己心仪的公司之前少不了准备工作,有一份全面细致面试题将帮助我们减少许多麻烦。之前给大家整理了一些Java基础方面常见的面试题,现在再整理一些JavaWeb方面常见的面试题,一方面帮助自己巩固下基础,另一方面也希望帮助想要换工作的朋友,看完之后如果你有更好的总结欢迎留言讨论分享。

e1de7199d9eda43d24bbfed13c60f9ea5af3b6e8

 01说一说selvet的生命周期

servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。 这个生存期由 javax.servlet.Servlet 接口的 init,service 和 destroy 方法表达。  

Servlet 被服务器实例化后,容器运行其 init 方法,请求到达时运行其 service 方法,service 方法自动派遣运行与请求对应的 doXXX 方法(doGet,doPost)等,当服务器决定将实例 销毁的时候调用其 destroy 方法。 web 容器加载 servlet,生命周期开始。通过调用 servlet 的 init()方法进行 servlet 的初始化。通过调用 service()方法实现,根据请求的不同调用不同的do***()方法。结束服务,web 容 器调用 servlet的 destroy()方法

 02 forward 和 redirect的区别

forward 是服务器请求资源,服务器直接访问目标地址的 URL,把那个 URL 的响应内容读 取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的, 所以它的地址栏中还是原来的地址。 

redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来 说浏览器会用刚才请求的所有参数重新请求,所以 session,request参数都可以获取。 

03 Spring MVC 整合

1.首先,要在web.xml里面配置SpringMVC的核心控制器,DispatcherServlet,对指定的后缀请求进行拦截。

2.Controller层要加@Controller注解,表明该类是MVC的控制层。

3.创建Service接口,给接口加上注解@Component或者@Service表明这是Service业务处理层

4.在Controller层声明Service变量(属性),给变量(属性)加上@Autowired注解,通过自动绑定机制将Service注入到Controller。 

(注:@Autowired默认是ByType,如果想根据属性名注入,那么就再加上注解 @Resource(name="属性名"))

5.在Controller层的方法上加上注解@RequestMapping("requestAddress")表明该方法的请求地址

6.Dao层要加上注解@Repository表明这是数据库持久层

7.同样将dao实例注入到service层中。

8.配置视图解析器“InternalResourceViewResolver”

对于处理后的跳转进行统一配置

04 JSP和 Servlet有哪些相同点和不同点

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

05 MVC的各个部分都有那些技术来实现

MVC 是 Model-View-Controller的简写。

Model 代表的是应用的业务逻辑(通过 JavaBean,EJB 组件实现)

View 是应用的表示面(由 JSP 页面产生)

Controller是提供应用的处理过程控制(一般是一个 Servlet)

通过这种设计模型把应用逻辑,处理过程和显 示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

06 JSP隐视对象中四个作用域的作用范围

四个作用域从大到小的顺序为:

appliaction>session>request>page

application:全局作用范围,整个应用程序共享.生命周期为:应用程序启动到停止。

session:会话作用域,当用户首次访问时,产生一个新的会话,以后服务器就可以记住这个会话状态。

request:请求作用域,就是客户端的一次请求。

page:一个JSP页面。

以上作用范围使越来越小, request和page的生命周期都是短暂的

他们之间的区别就是:一个request可以包含多个page页(include,forward)。

07 项目的生命周期    

1.需求分析

2.概要设计

3.详细设计(用例图,流程图,类图)

4.数据库设计(powerdesigner)

5.代码开发(编写)

6.单元测试(junit 白盒测试)(开发人员)

svn版本管理工具(提交,更新代码,文档)

7.集成测试 (黑盒测试,loadrunner(编写测试脚本)(高级测试))

8.上线试运行 (用户自己体验)

9.压力测试(loadrunner)

10.正式上线 

11.维护

08 session和cookie的区别

session是存储在服务器端,cookie是存储在客户端的,所以安全来讲session的安全性要比cookie高,然后我们获取session里的信息是通过存放在会话cookie里的sessionid获取的。又由于session是存放在服务器的内存中,所以session里的东西不断增加会造成服务器的负担,所以会把很重要的信息存储在session中,而把一些次要东西存储在客户端的cookie里。

cookie确切的说分为两大类分为会话cookie和持久化cookie,会话cookie确切的说是存放在客户端浏览器的内存中,所以说他的生命周期和浏览器是一致的,浏览器关了会话cookie也就消失了,然而持久化cookie是存放在客户端硬盘中,而持久化cookie的生命周期就是我们在设置cookie时候设置的那个保存时间,然后我们考虑一问题当浏览器关闭时session会不会丢失,从上面叙述分析session的信息是通过sessionid获取的,而sessionid是存放在会话cookie当中的,当浏览器关闭的时候会话cookie消失所以我们的sessionid也就消失了,但是session的信息还存在服务器端,这时我们只是查不到所谓的session但它并不是不存在。那么,session在什么情况下丢失,就是在服务器关闭的时候,或者是sessio过期,再或者调用了invalidate()的或者是我们想要session中的某一条数据消失调用session.removeAttribute()方法,然后session在什么时候被创建呢,确切的说是通过调用session.getsession来创建,这就是session与cookie的区别。

原文发布时间为:2018-09-14

本文作者:全栈开发者社区

本文来自云栖社区合作伙伴“全栈开发者社区”,了解相关信息可以关注“全栈开发者社区”。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值