JavaWeb 部分

1、Tomcat的优化经验

答:去掉对web.xml 的监视,把jsp 提前编辑成Servlet。

有富余物理内存的情况,加大tomcat 使用的jvm 的内存

 

2、HTTP请求的 GET与 POST方式的区别

GET:能看到传递的参数,有长度限制,能够被缓存,会保存在浏览器的浏览记录中。

POST:不能看到传递的参数,没有长度限制,不能被缓存,不会保存在浏览器的浏览记录中。


3、解释一下什么是 servlet;

servlet是什么?

sun公司制订的一种用来扩展web服务器功能的组件规范。

(1)扩展web服务器功能

web服务器(apache提供的web server, 微软的iis)时,这些web服务器只能够处理静态资源(即需要事先将html文件写好,并且保存到服务器特定的文件夹下面)的请求,如果是一个动态资源(需要计算,然后动态生成相应的html)的请求,web服务器不能够处理,需要扩展其功能。

cgi程序来扩展其功能

程序: 使用perl,c,c++等语言来开发的,并且符合cgi规范的程序。这种程序开发复杂,并且可移值性不好。

也可以用来扩展其功能。

(2)组件

什么是组件?

        符合特定的规范,并且实现了部分功能的,可以        单独部署的软件模块。

什么是容器?

        符合特定的规范,并且提供组件的运行环境的程序。

3)serlvet容器是什么?

就是一个组件,需要部署到servlet容器        才能运行。

容器为servlet提供网络相关的服务:

servlet容器为将请求中的相关数据解析出来,并且封装到请求对象(request)里面,这样一来,servlet就不需要理解http协议(只需要调用request对象的相关方法即可获取数据),另外,当servlet处理请求完毕,只需要将结果写到响应对象(response)里面,servlet容器会自动将response对象中的数据打包,发        送给浏览器。

 

4、说一说 Servlet的生命周期?

答:servlet 有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet 接口的init,service 和destroy 方法表达。Servlet 被服务器实例化后,容器运行其init 方法,请求到达时运行其service 方法,service

方法自动派遣运行与请求对应的doXXX 方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destroy 方法。

 

5、Servlet的基本架构

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、SERVLETAPI 中 forward()与 redirect()的区别?

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

 

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、forward和 redirect的区别

forward 是服务器请求资源,服务器直接访问目标地址的URL,把那个URL 的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,

所以它的地址栏中还是原来的地址。

redirect 就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request 参数都可以获取。

 

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

request.getAttribute()是要先setAttribute,才能拿到。

getParameter()是接收从上一个页面提交过来的数据。

 

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

jsp共有9大内置对象

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

 

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

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

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

jsp:setProperty:设置JavaBean 的属性。

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

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

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

 

13、JSP的常用指令

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

 

14. JSP中动态 INCLUDE与静态 INCLUDE的区别?

答:动态INCLUDE 用jsp:include 动作实现

<jsp:include page=included.jsp flush=true />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数静态INCLUDE 用include 伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@include file=included.htm %>

 

15、两种跳转方式分别是什么?有什么区别?

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

<jsp:forward page= nextpage.jsp/>

 

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

相当于go to 语句。

 

 

16、页面间对象传递的方法

request、session、application、cookie

 

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

 

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

 

 

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

M:model javabean 模型层

V:view jsp 视图层

C:control servlet 控制层

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

 

 

19、我们在 web应用开发过程中经常遇到输出某种编码的字符,如 iso8859-1

等,如何输出一个某种编码的字符串?

 

public String translate(String str){
String tempStr=””;
try{
tempStr=new String(str.getBytes(“ISO-8859-1”),”GBK”);
tempStr=tempStr.trim();
}catch(Exception e){
System.out.println(e.getMessage());
}
return tempStr;
}