JavaWeb面试题
4. Jsp相关技术路线(红线)
此部分包括: JSP, EL, JSTL, My Tag, I18N, FileUpDown
-
- jsp有哪些内置对象?作用分别是什么?
答:JSP共有以下9个内置的对象:
request: 用户端请求,此请求会包含来自GET/POST请求的参数
response: 网页传回用户端的回应
pageContext: 网页的属性是在这里管理
session: 与请求有关的会话期
application: 与当前应用对应的ServletContext对象, 应用中只有一个
out: 用来传送回应的输出 {}<%=%>
config: 与jsp配置对象的对象, 一般无用
page: jsp对应的Servlet对象
exception: 针对错误网页,未捕捉的异常对象
-
- jsp有哪些动作?作用分别是什么?
答:JSP共有以下6种基本动作
jsp:include:在页面被请求的时候引入一个文件。
jsp:forward:把请求转到一个新的页面。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
-
- JSP的常用指令
答:主要有下面3种指令
- page指令: 指定页面的的一些属性, 常用属性:
contentType="text/html; charset=utf-8" //向浏览器端输出数据的编码
pageEncoding="utf-8" //jsp文件被编译成java文件时所用的编码
session="true" //是否自动创建session
- include指令: 包含别一个jsp页面
- taglib指令: 引入一个标签库
- JSP中动态INCLUDE与静态INCLUDE的区别?
答:
- 动态包含: 用<jsp:include>, 包含的动作是在jsp对应的Serlet处理请求时去执行的,每次请求都会执行.
- 静态包含: 用include指令, 包含的动作是在jsp被编译成java文件时执行的, 只有第一次请求时执行.
4.5. JSP和Servlet有哪些相同点和不同点,他们之间的联系是什么?
答:
JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。
Servlet是纯Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。
-
- EL的功能, 为什么要用EL?
EL的功能包括:
1. 从四个域对象中取出属性数据显示
2. 取出请求参数数据显示
为什么要用EL?
在页面中用jsp脚本和jsp表达式来获取数据显示比较麻烦
- 需要条件判断
- 可能需要强转
-
- JSTL的功能, 为什么要用JSTL?
JSTL的功能
JSTL全名为JavaServer Pages Standard Tag Library, 主要用于基本输入输出、流程控制、循环、XML文件剖析、数据库查询及国际化和文字格式标准化的应用等
为什么要用JSTL?
在jsp页面做条件判断或循环操作并输出时, 比较费力
-
- 为什么要用自定义标签?, MyTag如何实现?
为什么要用?
- 不想在Jsp中编写java代码
- JSTL标签库不能满足实际项目的需求
自定义标签定义和使用的流程
- 编写标签处理器类(SimpleTagSupport的实现类)
- 重写doTag()
- 编写标签库文件(WEB-INF/xxx.tld)
- 整个文件的定义: <short-name> <uri>
- 标签的定义: <tag>
- 在jsp页面使用标签:
- 导入标签库(xxx.tld/)
- 使用标签
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技术:
- 在regist.jsp页面中生成一个唯一随机值, 将其保存到Session中, 同时将其保存为表单的隐藏域的值
- 在处理注册的请求时,获取Session中值,获取请求参数的值,比较两者是否相同, 如果相同说明不是重复提交,请求通过同时删除session中保存的值, 如果不相同则是重复提交, 不能通过.
经典现实案例:
一位乘客在北京火车站买了一张去天津的火车票(直接刷的那种),他刷票进站坐火车去了天津, 回来后过了几天, 他又需要去天津这次他不想再买票, 直接拿上次的票去进站口刷, 检票机提示“此火车票已使用过了”, 不能进站.
6. 其它
此部分包括: MVC, WebService和Mybatis
-
- MVC的各个部分都有那些技术来实现?如何实现?
答: MVC是Model-View-Controller的简写。
Model 代表的是应用的业务逻辑(通过JavaBean,EJB组件实现),
View 是应用的表示面(由JSP页面产生),
Controller 是提供应用的处理过程控制(一般是一个Servlet),
通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。
-
- WEB SERVICE相关名词解释
Web Service
Web Service是基于网络的、分布式的模块化组件,它执行特定的任务,遵守具体的技术规范,这些规范使得Web Service能与其他兼容的组件进行互操作。
JAXM(Java API for XML Messaging)
是为SOAP通信提供访问方法和传输机制的API。
WSDL:
是一种 XML 格式,用于将网络服务描述为一组端点,这些端点对包含面向文档信息或面向过程信息的消息进行操作。这种格式首先对操作和消息进行抽象描述,然后将其绑定到具体的网络协议和消息格式上以定义端点。相关的具体端点即组合成为抽象端点(服务)。
SOAP:
即简单对象访问协议(Simple Object Access Protocol),它是用于交换XML编码信息的轻量级协议。
-
- WebService技术的本质是使用哪几种技术实现的?
HTTP + XML + Schema
-
- 如何编码发布一个WebService?
- 定义SEI: 使用@Webservice和@Webmethod
- 定义SEI的实现类: 使用@Webservice
- 发布:使用JDK中的Endpoint,或者使用CXF框架基于Spring的配置来发布
- 如何编码请求一个WebService?
- 根据wsdl文档生成客户端代码.
- 利用客户端代码编写调用webservice的代码.
- 比较一下JDBC, dbutils, Mybatis和Hibernate
- JDBC: 原生访问数据库的方式, 其它三个都是对JDBC不同程度的包装
访问数据库比较麻烦, 代码重复度极高
- dbutils: 是对jdbc进行了相对简单的包装, 主要就是能自动封装查询结构集, 需要在代码中写sql语句
- Mybatis: 进一步封装jdbc, Sql语句写在配置文件中, 面向对象操作, 有一二级缓存功能
- Hibernate: 对jdbc封装得最彻底的框架, 纯面向对象, 可以不用写SQL
本教程由尚硅谷教育大数据研究院出品,如需转载请注明来源。