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(如果只是想读取会话中的数据)