【面试准备】JavaWeb部分

JavaWeb部分

致自己的面试准备题,加入自己以及整合其他人分享的!

1. Tomcat 的优化经验

去掉对 web.xml 的监视,把 jsp 提前编辑成 Servlet。
有富余物理内存的情况,加大 tomcat 使用的 jvm 的内存

2. 解释一下什么是 servlet

相当于处理请求的一个控制器。

3. 说一说 Servlet 的生命周期?

Servlet生命周期分为三个阶段:
  1,初始化阶段 调用init()方法
  2,响应客户请求阶段  调用service()方法
  3,终止阶段  调用destroy()方法

4. Servlet何时被创建

1,默认情况下,当WEB客户第一次请求访问某个Servlet的时候,WEB容器将创建这个Servlet的实例。
2,当web.xml文件中如果元素中指定了子元素时,Servlet容器在启动web服务器时,将按照顺序创建并初始化Servlet对象。

5. Servlet工作原理

1.客户端发送请求
2.Servlet调用service()
3.调用doGet、doPost()
4.调用业务层
5.产生响应给客户

6. SERVLET API 中 forward()与 redirect()的区别?

forward:地址栏不改变,请求1次,在服务端完成。
redirect:地址栏改变,请求1或2次,在客户端完成。

7. 什么情况下调用 doGet()和 doPost()?

Jsp 页面中的 FORM 标签里的 method 属性为 get 时调用 doGet(),为 post 时调用 doPost()。

8.Request 对象的主要方法

setAttribute(String name,Object):设置名字为 name 的 request 的参数值

getAttribute(String name):返回由 name 指定的属性值

getAttributeNames():返回 request 对象所有属性的名字集合,结果是一个枚举的实例

getCookies():返回客户端的所有 Cookie 对象,结果是一个 Cookie 数组

getCharacterEncoding():返回请求中的字符编码方式

getContentLength():返回请求的 Body 的长度

getHeader(String name):获得 HTTP 协议定义的文件头信息

getHeaders(String name):返回指定名字的 request Header 的所有值,结果是一个枚举的

实例

getHeaderNames():返回所以 request Header 的名字,结果是一个枚举的实例

getInputStream():返回请求的输入流,用于获得请求中的数据

getMethod():获得客户端向服务器端传送数据的方法

getParameter(String name):获得客户端传送给服务器端的有 name 指定的参数值

getParameterNames():获得客户端传送给服务器端的所有参数的名字,结果是一个枚举的

实例

getParametervalues(String name):获得有 name 指定的参数的所有值

getProtocol():获取客户端向服务器端传送数据所依据的协议名称

getQueryString():获得查询字符串

getRequestURI():获取发出请求字符串的客户端地址

getRemoteAddr():获取客户端的 IP 地址

getRemoteHost():获取客户端的名字

getSession([Boolean create]):返回和请求相关 Session

getServerName():获取服务器的名字

getServletPath():获取客户端所请求的脚本文件的路径

getServerPort():获取服务器的端口号

removeAttribute(String name):删除请求中的一个属性

9. JSP 的常用指令

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

10. request.getAttribute()和 request.getParameter()有何区别?

getParameter 得到的都是 String 类型的。或者是 http://a.jsp?id=123 中的 123,或者是某个表单提交过去的数据。 getAttribute 则可以是对象。

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

JSP 共有以下9个内置的对象:
Page: JSP 网页本身,表示从该页面产生的一个 servlet 实例
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 实例的初始化参数。

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

JSP 共有以下6种基本动作

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

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

jsp:setProperty:设置 JavaBean 的属性。

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

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

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

13. 页面间对象传递的方法

request,session,application,cookie 等

14. 两种跳转方式分别是什么?有什么区别?

有两种,分别为:

<jsp:include page=included.jsp flush=true>

<jsp:forward page= nextpage.jsp/>

前者页面不会转向 include 所指的页面,只是显示该页的结果,主页面还是原来的页面。执行完后还会回来,相当于函数调用。并且可以带参数.后者完全转向新页面,不会再回来。

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

JSP 是 Servlet 技术的扩展,本质上是 Servlet 的简易方式,更强调应用的外表表达。JSP
编译后是"类 servlet"。JSP的优点是擅长于网页制作,生成动态页面比较直观,缺点是不容易跟踪与排错。
Servlet是纯Java语言,擅长于处理流程和业务逻辑,缺点是生成动态网页不直观。

Servlet 和 JSP 最主要的不同点在于,Servlet 的应用逻辑是在 Java文件中,并且完全从表示层中的 HTML 里分离开来。而 JSP 的情况是 Java 和 HTML 可以组合成一个扩展名为.jsp 的文件。JSP 侧重于视图,Servlet 主要用于控制逻辑。

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

MVC 是 Model-View-Controller 的简写。Model 代表的是应用的业务逻辑(通过JavaBean,EJB 组件实现),View 是应用的表示面(由 JSP 页面产生),Controller 是提供应用的处理过程控制(一般是一个 Servlet),通过这种设计模型把应用逻辑,处理过程和显示逻辑分成不同的组件实现。这些组件可以进行交互和重用。

17. 我们在 web 应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1等,如何输出一个某种编码的字符串?

Public String translate(String str) {
String tempStr ="";
try {
  tempStr=newString(str.getBytes("ISO-8859-1"), "GBK");
  tempStr=tempStr.trim();
}
catch (Exception e) { 
  System.err.println(e.getMessage());
}
return tempStr;
}

18. servlet的jar包是?编写servlet需要继承什么类?

servlet-api.jar
HttpServlet

19.编写servlet通常要实现的方法?

doGet, doPost, init, destroy方法

20. doGet方法和doPost方法中的2个参数是什么?

httpServletRequest
httpServletResponse

21. 如何获取参数

request.getParameter–获取单值
request.getParameterValues–获取多值

21. forward,sendRedirect在Servlet中对应的方法?

RequestDispatcher rd = request.getRequestDispatcher(“目标文件”);
rd.forward(request, response);
response.sendRedirect(“目标文件”);

22.servlet在哪个文件中进行配置?

web.xml–web部署描述文件。WEB-INF\web.xml

23. 谈谈servlet过滤器的作用?

servlet过滤器是特殊的servlet,能够对特定的请求路径进行过滤,在访问这个路径之前,先执行过滤器,过滤器进行预处理,然后再进行后续的处理。

24. 谈谈servlet监听器的作用?

servlet监听器对特定的事件进行监听,当发生这些事件的时候,就会执行监听器的代码。

25. servlet API的2个主要包?

javax.servlet.;
javax.servlet.http.
;

26.要给用户响应信息,如何完成?

response.setContentType(“text/html, charset=“GBK””);
PrintWriter out = response.getWriter();
out.println("…");

27.编译好的servlet类放在什么位置?

放在web应用WEB-INF下面的classes文件夹中。

28. 什么是web容器?

实现J2EE规范中web协议的应用。该协议定义了web程序的运行时环境,包括:并发性,安全性,生命周期管理等等。

29. jsp的执行过程?

1)客户端发出request请求
2)jsp容器将jsp转译成servlet的源代码
3)将产生的servlet的源代码经过编译后,加载到内存中
4)把结果response响应到客户端

30. 4种作用域

page:代表与一个页面相关的对象和属性。静态include可以共享该对象和属性
request:代表与某个请求相关的对象和属性。
session:代表与某个用户相关的对象和属性。
application:代表与整个web应用程序相关的对象和属性。

31. jsp的4种过滤器

request,forward,include,error

32. jsp中执行浏览器cache

response.setHeader(“Expires”, 0);
response.setHeader(“Cache-Control”, “no-cache”);
response.setHeader(“Pragma”, “no-cache”);

33. jsp中设置cookie

Cookie c = new Cookie(“name”, “tomzhang”);
response.addCookie©;

34. jsp中删除cookie

c.setMaxAge(0);

35. jsp中如何停止jsp的执行

<%
if(条件表达式){
//do something
}else{
return;
}
%>

36. 当使用一个结果集时,如何防止字段为"null"显示在html文本域中?

<%!
String blanknull(String s){
if(s == null or s.equals("")){ s = "";}
return s;
}
%>
<input type ="text" name="name" value="<%=blanknull(name)%>"/>

37. 如何获得当前的session数?

使用HttpSessionBindingListener监听器来跟踪。

38. getSession(true)和getSession(false)的区别?

request.getSession(true):如果不存在会话就创建一个新的会话(如果想把数据写入到会话中)
request.getSession(false):如果不存在会话就返回null(如果只是想读取会话中的数据)

猜你喜欢

转载自blog.csdn.net/weixin_43266090/article/details/90301828