写点什么

java web 部分 (1),Java 技术总监面试常见问题及答案

发布于: 1 小时前



package test;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ServletName extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
}
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
}
}
复制代码


6、servlet API 中 forward()与 redirect()的区别?





前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其他服务器上的资源,则必须使用sendRedirect()方法。
复制代码


7、Request 对象的常用方法





setAttribute(String name,Object):设置名字为 name 的 request 的参数值
getAttribute(String name):返回由 name
getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组
getCharacterEncoding():返回请求中的字符编码方式
getParameter(String name):获得客户端传送给服务器端的有 name 指定的参数
getRequestURI():获取发出请求字符串的客户端地址
getRemoteAddr():获取客户端的 IP 地址
getRemoteHost():获取客户端的名字
getServerName():获取服务器的名字
getServletPath():获取客户端所请求的脚本文件的路径
getServerPort():获取服务器的端口号
removeAttribute(String name):删除请求中的一个属性
复制代码


8、简述 HttpSession 的作用、使用方法,可用代码说明





HttpSession中可以跟踪并存储用户信息,把值设置到属性中,有2个方法:setAttribute()、getAttribute();
例如:在一个方法中用session.setAttribute("student",student);在一个session中设置一个属性名为student,值为一个名为student的对象。而后可在同一session范围内用getAttribute("student")取出该属性,得到student对象。
复制代码


9、jsp 有哪些内置对象?作用分别是什么?分别有什么方法?





jsp共有以下9个内置对象:
request 用户端请求,此请求会包含来自GET/POST请求的参数
response 网页传回用户端的回应
pageContext 网页的属性是在这里管理
session 与请求有关的会话期
application servlet正在执行的内容
out 用来传送回应的输出
config servlet 的构架部件
page JSP网页本身
exception 针对错误网页,未捕捉的例外




request:表示 HttpServletRequest 对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取 cookie, header, 和 session 数据的有用的方法。
response:表示 HttpServletResponse 对象,并提供了几个用于设置送回 浏览器的响应的方法(如 cookies,头信息等)
out:对象是 javax.jsp.JspWriter 的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext:表示一个 javax.servlet.jsp.PageContext 对象。它是用于方便存取各种范围的名字空间、servlet 相关的对象的 API,并且包装了通用的 servlet 相关功能的方法。
session:表示一个请求的 javax.servlet.http.HttpSession 对象。Session 可以存贮用户的状态信息
applicaton :表示一个 javax.servle.ServletContext 对象。这有助于查找有关 servlet 引擎和servlet 环境的信息
config:表示一个 javax.servlet.ServletConfig 对象。该对象用于存取 servlet 实例的初始化参数。
page:表示从该页面产生的一个 servlet 实例
复制代码


10、介绍在 JSP 中如何使用 JavaBean?





在 JSP 中使用 JavaBean 常用的动作有:
<jsp:useBean />:用来创建和查找 bean 对象;
<jsp:setProperty />:用来设置 bean 的属性,即调用其 setXxx()方法;
<jsp:getProperty />:用来获得 bean 的属性,即调用其 getXxx()方法
复制代码


11、JSP 的常用指令





isErrorPage(是否能使用Exception对象),isELIgnored(是否忽略表达式)
复制代码


12、jsp 的四种范围?





page在同一个页面有效;
request 在同一次请求(请求页面)间有效,一般请求完毕则失效,但若是通过forward的方式跳转,则forward页面依旧能拿到request的值,但如果是通过redirect的方式,则相当于重新发送一次页面请求,request中的值失效;
session 在一个会话的生命周期内有效,简单来说就是与服务器连接的时间内,注意的是所有页面共享,如果期间断线,便会失效;
application 作用域最大,直到服务器停止才会失效,所有页面共享。但使用时不宜定义太多,不然或造成服务器负担加重;
复制代码


13、jsp 作用域由大到小





application> session> request> page
值得注意的是一个request可以包含多个page(include, forward, filter)
复制代码


14、过滤器有哪些作用?





可以验证客户是否来自可信的网络,可以对客户提交的数据进行重新编码,可以从系统里获得配置的信息,可以过滤掉客户的某些不应该出现的词汇,可以验证用户是否登录,可以验证客户的浏览器是否支持当前的应用,可以记录系统的日志等等。
复制代码


15、过滤器的用法?(对客户端的请求统一编码和对客户端进行认证)





首先要实现Filter接口,同时覆盖Filter接口的三个方法:
init(FilterConfig config)//用于获得FilterConfig对象;
doFilter(ServletRequest request,ServletResponse response,FilterChain chain)//进行过滤处理的一些业务;
destroy()//销毁Filter。
复制代码


16、JSP 和 Servlet 中的请求转发分别如何实现?





JSP中的请求转发可以利用forward动作实现:<jsp:forward/>;
Servlet中实现请求转发的方式为:getServletContext().getRequestDispacher(pach).forward(req.res)。
复制代码


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





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


18、详细描述 MVC。





基于 Java 的 Web 应用系统采用 MVC 架构模式,即 model(模型)、view(视图)、control(控制)分离设计;
Model:即处理业务逻辑的模块,每一种处理一个模块;
View:负责页面显示,显示 MODEL 处理结果给用户,主要实现数据到页面转换过程;
Control:负责每个请求的分发,把 FORM 数据传递给 MODEL 处理,把处理结果的数
据传递给 VIEW 显示。


Model 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现), View 是应用的表示面(由 JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个 Servlet)
复制代码


做项目中得到的一些经验





对于url-pattern
/abc/myServlet.do


/abc/*


/*


*.do


/abc/*.do 错误


abc/*.do 错误
复制代码


Servlet 中的 service 方法,在每次请求都会被调用



sendRedirect()方法后的代码仍会执行
复制代码


只有 request 方式处理请求才可以共享 ServletRequest 对象,当使用重定向时不可以。



只有request域要存值,用转发,其他一律用重定向


**最后,附一张自己面试前准备的脑图:**
![image](https://static001.geekbang.org/infoq/4d/4d88e56bab4afe10290ff979f3768769.jpeg)
**面试前一定少不了刷题,为了方便大家复习,我分享一波个人整理的面试大全宝典**

* Java核心知识整理
![image](https://static001.geekbang.org/infoq/81/817610375414038a72721cbea563406b.png)

* Spring全家桶(实战系列)
![image.png](https://static001.geekbang.org/infoq/82/82a04a63318d6fc78509e2067394ea40.png)

**Step3:刷题**
既然是要面试,那么就少不了刷题,实际上春节回家后,哪儿也去不了,我自己是刷了不少面试题的,所以在面试过程中才能够做到心中有数,基本上会清楚面试过程中会问到哪些知识点,高频题又有哪些,所以刷题是面试前期准备过程中非常重要的一点。
**以下是我私藏的面试题库:**
![image](https://static001.geekbang.org/infoq/ca/cab7391076a6aad49aa2070f2437cbdc.png)
很多人感叹“学习无用”,实际上之所以产生无用论,是因为自己想要的与自己所学的匹配不上,这也就意味着自己学得远远不够。无论是学习还是工作,都应该有主动性,所以如果拥有大厂梦,那么就要自己努力去实现它。
**资料领取方式:[Java全套学习手册](https://gitee.com/vip204888/java-p7)**
以上学习资料均免费分享,最后祝愿各位身体健康,顺利拿到心仪的offer!
复制代码


用户头像

VX:vip204888 领取资料 2021.07.29 加入

还未添加个人简介

评论

发布
暂无评论
java web 部分(1),Java技术总监面试常见问题及答案