JavaWeb面试题

4. Jsp相关技术路线(红线)

此部分包括: JSP, EL, JSTL, My Tag, I18N, FileUpDown

    1. jsp有哪些内置对象?作用分别是什么?

答:JSP共有以下9个内置的对象:

request: 用户端请求,此请求会包含来自GET/POST请求的参数

response: 网页传回用户端的回应

pageContext: 网页的属性是在这里管理

session: 与请求有关的会话期

application:  与当前应用对应的ServletContext对象, 应用中只有一个

out: 用来传送回应的输出 {}<%=%>

config: 与jsp配置对象的对象, 一般无用

page: jsp对应的Servlet对象

exception: 针对错误网页,未捕捉的异常对象

 

    1. jsp有哪些动作?作用分别是什么?

答:JSP共有以下6种基本动作

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

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

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

jsp:setProperty:设置JavaBean的属性。

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

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

    1. JSP的常用指令

答:主要有下面3种指令

  1. page指令: 指定页面的的一些属性, 常用属性:

contentType="text/html; charset=utf-8"  //向浏览器端输出数据的编码

pageEncoding="utf-8" //jsp文件被编译成java文件时所用的编码

session="true"  //是否自动创建session

JavaWeb面试题

  1. include指令: 包含别一个jsp页面
  2. taglib指令: 引入一个标签库
    1. JSP中动态INCLUDE与静态INCLUDE的区别?

答:

  1. 动态包含: 用<jsp:include>, 包含的动作是在jsp对应的Serlet处理请求时去执行的,每次请求都会执行.
  2. 静态包含: 用include指令, 包含的动作是在jsp被编译成java文件时执行的, 只有第一次请求时执行.

4.5. JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么? 

答:

JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。

Servlet是纯Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。

 

    1. EL的功能, 为什么要用EL?

EL的功能包括:

1. 从四个域对象中取出属性数据显示

2. 取出请求参数数据显示

为什么要用EL?

在页面中用jsp脚本和jsp表达式来获取数据显示比较麻烦

  1. 需要条件判断
  2. 可能需要强转

 

    1. JSTL的功能, 为什么要用JSTL?

JSTL的功能

JSTL全名为JavaServer Pages Standard Tag Library, 主要用于基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等

为什么要用JSTL?

在jsp页面做条件判断或循环操作并输出时, 比较费力

    1. 为什么要用自定义标签?, MyTag如何实现?

为什么要用?

  1. 不想在Jsp中编写java代码
  2. JSTL标签库不能满足实际项目的需求

自定义标签定义和使用的流程

  1. 编写标签处理器类(SimpleTagSupport的实现类)
    1. 重写doTag()
  2. 编写标签库文件(WEB-INF/xxx.tld)
    1. 整个文件的定义: <short-name>  <uri>
    2. 标签的定义: <tag>  
  3. 在jsp页面使用标签:
    1. 导入标签库(xxx.tld/)
    2. 使用标签

 

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

此部分包括: Cookie和Session技术

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

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

 

经典现实案例:

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

 

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

 

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

 

JavaWeb面试题

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

1. 登陆功能是用Session实现的,就是向Session对象中保存当前用户的对象

2. 自动的功能用Cookie实现, 就是登陆时将用户的信息保存为持久化Cookie

3. 下次访问时, 读取请求中如果有用户信息的Cookie就可以自动登陆

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

答: 使用Session技术:

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

经典现实案例:

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

 

JavaWeb面试题

6. 其它

此部分包括: MVC, WebService和Mybatis

 

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

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

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

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

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

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

 

    1. WEB SERVICE相关名词解释

Web Service

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

JAXM(Java API for XML Messaging)

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

WSDL:

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

SOAP:

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

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

HTTP + XML + Schema

    1. 如何编码发布一个WebService?
  1. 定义SEI: 使用@Webservice和@Webmethod
  2. 定义SEI的实现类: 使用@Webservice
  3. 发布:使用JDK中的Endpoint,或者使用CXF框架基于Spring的配置来发布
    1. 如何编码请求一个WebService?
  1. 根据wsdl文档生成客户端代码.
  2. 利用客户端代码编写调用webservice的代码.
    1. 比较一下JDBC, dbutils, Mybatis和Hibernate
  1. JDBC: 原生访问数据库的方式, 其它三个都是对JDBC不同程度的包装

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

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

 

 

本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。