JavaWeb
来源:互联网 发布:西部证券软件 编辑:程序博客网 时间:2024/06/01 09:12
1、Tomcat的优化经验?
去掉对web.xml,把jsp提前编辑成Servlet。
有富余物理内存的情况,加大tomcat使用的jvm的内存。
2、Http请求的GET和POST方式的区别?
GET请求方式提交数据不安全,数据置于请求行中,客户端地址栏可见。提交数据大小有限制。
POST请求方式提交数据安全,数据置于请求体中,客户端不可见。提交数据大小没有限制。
3、什么是Servlet?
Servlet是在服务器上运行的小程序。Servlet的主要功能在于交互式的浏览和修改数据,生成动态Web内容。
4、Servlet的生命周期?
Servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。
这个生存期有javax.servlet.Servlet接口的init.service和destory方法表达。
Servlet被服务器实例化后,容器运行其init方法,请求到达时运行其service方法,service方法自动派遣运行与请求对应的doXXX方法(doGet,doPost)等,当服务器决定将实例销毁的时候调用其destory方法。
5、Servlet API中forward()和redirect()的区别?
forward()转发是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;
redirect()重定向则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样从浏览器的地址栏中可以看到跳转后的链接地址。
所以,转发更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。
在有些情况下,比如:需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
本质区别
解释一
一句话,转发是服务器行为,重定向是客户端行为。为什么这样说呢,这就要看两个动作的工作流程:
转发过程:客户浏览器发送http请求——》web服务器接受此请求——》调用内部的一个方法在容器内部完成请求处理和转发动作——》将目标资源发送给客户;在这里,转发的路径必须是同一个web容器下的url,其不能转向到其他的web路径上去,中间传递的是自己的容器内的request。在客户浏览器路径栏显示的仍然是其第一次访问的路径,也就是说客户是感觉不到服务器做了转发的。转发行为是浏览器只做了一次访问请求。
重定向过程:客户浏览器发送http请求——》web服务器接受后发送302状态码响应及对应新的location给客户浏览器——》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址——》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览器重新发出了请求,则就没有什么request传递的概念了。在客户浏览器路径栏显示的是其重定向的路径,客户可以观察到地址的变化的。重定向行为是浏览器做了至少两次的访问请求的。
解释二
重定向,其实是两次request
第一次,客户端request A,服务器响应,并response回来,告诉浏览器,你应该去B。这个时候IE可以看到地址变了,而且历史的回退按钮也亮了。重定向可以访问自己web应用以外的资源。在重定向的过程中,传输的信息会被丢失。
例子:
response.sendRedirect("loginsuccess.jsp");
请求转发是服务器内部把对一个request/response的处理权,移交给另外一个
对于客户端而言,它只知道自己最早请求的那个A,而不知道中间的B,甚至C、D。传输的信息不会丢失。
例子:
RequestDispatcherdis=request.getRequestDispatcher(“loginsuccess.jsp”);
Dis.forward(request,response);
解释三
假设你去办理某个执照
重定向:你先去了A局,A局的人说:“这个事情不归我们管,去B局”,然后,你就从A退了出来,自己乘车去了B局。
转发:你先去了A局,A局看了以后,知道这个事情其实应该B局来管,但是他没有把你退回来,而是让你坐一会儿,自己到后面办公室联系了B的人,让他们办好后,送了过来
6、什么情况下调用doGet()和doPost()?
Jsp页面中的FORM标签中的method属性为get时调用doGet(),为post时调用doPost()。
7、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):删除请求中的一个属性
8、jsp有哪些内置对象?作用分别是什么?分别有什么方法?
JSP共有9个内置对象:
request:用户端请求,此请求会包含来自GET/POST请求的参数。
response:网页传回用户端的回应。
pageContext:网页的属性是在这里管理。
session:与请求有关的会话期。
application:Servlet正在执行的内容。
out:用来传送回应的输出。
config:Servlet的构架部件。
page:网页本身。
exception:针对错误网页,未捕捉的例外。
request:表示HttpServletRequest对象。它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie、header和session数据的方法。
response:表示HttpServletResponse对象,并且提供了几个用于设置送回浏览器的响应方法(如cookies、头信息等)。
out:该对象是javax.jsp.JspWriter的一个实例,并提供了几个方法使你能用于向浏览器回送输出结果。
pageContext:表示一个javax.servlet.http.HttpSession对象。Session可以存储用户的状态信息。
application:表示一个javax.servlet.ServletContext对象。这有助于查找有关servlet引擎和servlet环境的信息。
config:表示一个javax.servlet.ServletConfig对象。该对象用于存取servlet实例的初始化参数。
page:表示从该页面产生的一个servlet实例。
9、JSP有哪些动作?作用分别是什么?
JSP有6中基本动作:
jsp:include:在页面被请求的时候引入一个文件。
jsp:useBean:寻找或者实例化一个JavaBean。
jsp:setProperty:设置JavaBean的属性。
jsp:getProperty:输出某个JavaBean的属性。
jsp:forward:把请求转到一个新的页面。
jsp:plugin:根据浏览器类型为Java插件生成OBJECT或EMBED标记
10、JSP的常用指令?
isErrorPage(是否能使用Exception对象),isELIgnored(是否忽略表达式)。
11、JSP中动态INCLUDE与静态INCLUDE的区别?
动态INCLUDE用jsp:include动作实现。
<jsp:include page=include.jsp flush=true/>它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数。
静态INCLUDE用include伪码实现,不会检查所含文件的变化,适用于包含静态页面<%@include file=include.htm%>
12、JSP和Servlet有哪些相同点和不同点?它们之间的联系是什么?
JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。
JSP编译后是“类servlet”。Servlet和JSP最主要的不同点在于:Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离出来。而JSP的情况是Java和HTML可以组合成一个扩展名为.jsp的文件。
JSP侧重于视图,Servlet主要用于控制逻辑。
13、页面键对象传递的方法?
request、session、application、cookie等。(有待考证补充☆)
14、MVC的各个部分都有哪些技术来实现?如何实现?
MVC是Model-View-Controller的简写。
Model代表的是应用的业务逻辑,通过JavaBean、EJB组件实现。
View是应用的表示面,由JSP页面实现。
Controller是提供应用的处理过程控制,一般是由Servlet实现。
通过这种分层设计模式把应用逻辑、处理过程和显示逻辑分成不同的组件实现,这些组件可以进行交互和重用。
15、在web应用开发过程中经常遇到输出某种编码的字符,如iso-8859-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;
}
- javaweb
- JavaWeb
- JavaWeb
- javaweb
- javaWeb
- JAVAweb
- 【JavaWeb】
- javaweb
- javaweb
- javaweb
- javaweb
- javaWeb
- javaweb
- javaweb
- JavaWEB
- JavaWeb
- javaweb
- JavaWeb
- python 学习-字符串
- json
- Windows7部署Android开发环境
- VMware安装kali,登陆不成功,重置密码方法
- MyEclipse 中设置分割线,让代码更加规范。
- JavaWeb
- 解决Maven无法下载相关依赖(update卡在25%现象)
- python多继承(新式类)一
- QGrapicsItem类
- 第14章 数据结构扩张 区间树部分代码
- 大数加法和大数乘法模板函数
- [20160314] 文明4 / 敢达OL / Socket完全优化 / 白色情人节!
- 网页性能管理详解
- poj 1321 棋盘问题(简单搜索)