尊重原创:http://blog.csdn.net/caohaicheng/article/details/38116481html
一、说一说Servlet生命周期java
Servlet生命周期包括三部分:web
初始化:Web容器加载servlet,调用init()方法浏览器
处理请求:当请求到达时,运行其service()方法。service()自动派遣运行与请求相对应的doXXX(doGet或者doPost)方法。安全
销毁:服务结束,web容器会调用servlet的distroy()方法销毁servlet。服务器
二、get提交和post提交有何区别session
(1)get通常用于从服务器上获取数据,post通常用于向服务器传送数据架构
(2)请求的时候参数的位置有区别,get的参数是拼接在url后面,用户在浏览器地址栏能够看到。post是放在http包的包体中。app
好比说用户注册,你不能把用户提交的注册信息用get的方式吧,那不是说把用户的注册信息都显示在Url上了吗,是不安全的。jsp
(3)能提交的数据有区别,get方式能提交的数据只能是文本,且大小不超过1024个字节,而post不只能够提交文本还有二进制文件。
因此说想上传文件的话,那咱们就须要使用post请求方式
(4)servlet在处理请求的时候分别对应使用doGet和doPost方式进行处理请求
三、JSP与Servlet有什么区别
Servlet是服务器端的程序,动态生成html页面发送到客户端,可是这样程序里会有不少out.println(),java与html语言混在一块儿
很乱,因此后来sun公司推出了JSP.其实JSP就是Servlet,每次运行的时候JSP都首先被编译成servlet文件,而后再被编译成
.class文件运行。有了jsp,在MVC项目中servlet再也不负责动态生成页面,转而去负责控制程序逻辑的做用,控制jsp与javabean
之间的流转。
四、doGet与doPost方法的两个参数是什么
HttpServletRequest:封装了与请求相关的信息
HttpServletResponse:封装了与响应相关的信息
五、request.getAttribute()和request.getParameter
(1)有setAttribute,没有setParameter方法
(2)getParameter获取到的值只能是字符串,不能够是对象,而getAttribute获取到的值是Object类型的。
(3)经过form表单或者url来向另外一个页面或者servlet传递参数的时候须要用getParameter获取值;getAttribute只能获取setAttribute的值
(4)setAttribute是应用服务器把这个对象放到该页面所对应的一块内存当中,当你的页面服务器重定向到另外一个页面的时候,应用服务器
会把这块内存拷贝到另外一个页面对应的内存当中。经过getAttribute能够取得你存下的值,固然这种方法能够用来传对象。
用session也是同样的道理,这是说request和session的生命周期不同而已。
六、JSP有哪些内置对象,做用是什么?
名称 | 做用 |
request | 包含用户端请求的信息 |
response | 包含服务器传回客户端的响应信息 |
session | 与请求有关的会话期 |
pageContext | 管理网页属性 |
application | 服务器启动时建立,服务器关闭时中止,为多个应用程序保存信息 |
out | 向客户端输出数据 |
config | servlet的架构部件 |
page | 指网页自己 |
exception | 针对错误页面才可以使用 |
七、四种会话跟踪技术做用域
(1)page:一个页面
(2)request::一次请求
(3)session:一次会话
(4)application:服务器从启动到中止。
七、JSP中动态INCLUDE和静态INCLUDE有什么区别
include指令用于把另外一个页面包含到当前页面中,在何时包含的?再转换成servlet的时候包含进去的。
动态INCLUDE用jsp:include动做实现 <jsp:include page="included.jsp" flush="true" />它老是会检查所含文件中的变化,适合用于包含动态页面,
而且能够带参数.
静态INCLUDE用include伪码实现,定不会检查所含文件的变化,适用于包含静态页面<%@ include file="included.htm" %>
八、forward和redirect的区别
转发与重定向
(1)从地址栏显示来讲
forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,而后把这些内容再发给浏览器.浏览器根本不知道服务器发送
的内容从哪里来的,因此它的地址栏仍是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器从新去请求那个地址.因此地址栏显示的是
新的URL.
(2)从数据共享来讲
forward:转发页面和转发到的页面能够共享request里面的数据.
redirect:不能共享数据.
(3)从运用地方来讲
forward:通常用于用户登录的时候,根据角色转发到相应的模块.
redirect:通常用于用户注销登录时返回主页面和跳转到其它的网站等.
(4)从效率来讲
forward:高.
redirect:低.