JavaWeb面试题

5. Web会话相关技术路线(紫线)

此部分包括: Cookie和Session技术

5.1. 说说你对Cookie与Session技术的理解?

  1. cookie是一种浏览器端的缓存技术, 而Session是一种服务器端的缓存技术(依赖cookie)

经典现实案例:

某咖啡厅推出了一个优惠活动:累计喝五杯咖啡可以免费赠送一杯。他们该如何实现呢?

方法一: 咖啡厅办卡(id,count), 交给消费者, 消费者下次再来消费时, 必须带上卡, 消费一次由咖啡厅来更新卡上的数据, 再次交给消费者

方法二: 咖啡厅办卡(id), id和count都保存在咖啡厅的电脑中的表中, 将卡(id)交给消费者;消费者下次再来消费时, 必须带上卡, 消费一次由咖啡厅来更新表中的数据, 再次交给消费者

5.2. 说说自动登陆功能的编码实现?

  1. 登陆功能是用Session实现的,就是向Session对象中保存当前用户的对象
  2. 自动的功能用Cookie实现, 就是登陆时将用户的信息保存为持久化Cookie
  3. 下次访问时, 读取请求中如果有用户信息的Cookie就可以自动登陆

5.3. 如何防止表单重复提交?

答: 使用Session技术:

  1. 在jsp页面中生成一个唯一随机值, 将其保存到Session中, 同时将其保存为表单的隐藏域的值
  2. 在处理注册的请求时,获取Session中值,获取请求参数的值,比较两者是否相同, 如果相同说明不是重复提交,请求通过同时删除session中保存的值, 如果不相同则是重复提交, 不能通过.

经典现实案例:

一位乘客在北京火车站买了一张去天津的火车票(直接刷的那种),他刷票进站坐火车去了天津, 回来后过了几天, 他又需要去天津这次他不想再买票, 直接拿上次的票去进站口刷, 检票机提示此火车票已使用过了”, 不能进站.

6. 其它

此部分包括: MVC, WebService和Mybatis

6.1. MVC的各个部分都有那些技术来实现?如何实现?

答: MVC是Model-View-Controller的简写。

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

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

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

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

6.2. WEB SERVICE相关名词解释

Web Service

Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。

JAXM(Java API for XML Messaging)

是为SOAP通信提供访问方法和传输机制的API。

WSDL:

是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。

SOAP:

即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。 

6.3. WebService技术的本质是使用哪几种技术实现的?

HTTP + XML + Schema

6.4. 如何编码发布一个WebService?

  1. 定义SEI: 使用@Webservice和@Webmethod
  2. 定义SEI的实现类: 使用@Webservice
  3. 发布:使用JDK中的Endpoint,或者使用CXF框架基于Spring的配置来发布

6.5. 如何编码请求一个WebService?

  1. 根据wsdl文档生成客户端代码.
  2. 利用客户端代码编写调用webservice的代码.

6.6. 比较一下JDBC, dbutils, Mybatis和Hibernate

  1. JDBC: 原生访问数据库的方式, 其它三个都是对JDBC不同程度的包装

访问数据库比较麻烦, 代码重复度极高

  1. dbutils: 是对jdbc进行了相对简单的包装, 主要就是能自动封装查询结构集, 需要在代码中写sql语句
  2. Mybatis: 进一步封装jdbc, Sql语句写在配置文件中, 面向对象操作, 有一二级缓存功能

Hibernate: 对jdbc封装得最彻底的框架, 纯面向对象, 可以不用写S