servlet总结

一、简介
在服务器端运行的Java程序,主要作用是控制Java Web程序的业务逻辑
该程序段主要组成:Init() service() destroy()
在服务器中,当servlet的实例只创建一个
Init()在首次创建servlet实例是进行调用,初始化相关参数。
Destroy()在servlet销毁时,被调用
Service() 主要提供请求的处理,它在servlet的生命周期中可以多次被调用
service中包含两个方法
处理Get请求
    doGet(HttpServletReqquest request,HttpServletResponse response)
处理Post请求
    doPost(HttpServletReqquest request,HttpServletResponse response)
简要介绍request、response
request:存储请求的一些信息
request.getParameter("paraName");//从JSP页面或URL中获取参数值,返回字符串类型
request.setAttribute("name",variable);//设置一个键值对,通常传递给JSP页面或另外一个servlet。variable可以为任意类型
request.getAttribute("name");//取出与name相对应的属性值
request.getCookies();//获取从浏览器传来的Cookies返回值类型Cookie[] ,通常在JSP页面获取从而预填写相关内容
request.getSession()//获取Session
request.getRequestDispatcher("url").forward(request, response);//转发,服务器内进行
request.getInputStream();//获取输入字节流(没有字符流)
注:Session在域上的方法与request差不多,只是Session作用在一次会话的范围内,而request作用在一次请求范围内
response
response.getOutputStream(); //获取字节输出流
response.getWriter(); //获取字节输出流
response.addCookie(cookie);//在反应中添加一个cookie
response.sendRedirect("url");//重定向到url
二、重定向与转发的区别
1、A、浏览器行为 重定向时,浏览器至少会发送两次请求,并且地址栏的URL会改变。
     第一次请求:浏览器向服务器发送一个请求,服务器收到请求后,向浏览器发送一个重定向连接,然后浏览器接收到这个连接
     第二次请求:浏览器依据连接向服务器再次发送请求,服务器收到请求后向浏览器发送响应,浏览器收到响应后并显示到页面
   B、服务器行为 浏览器只请求一次。转发是在服务器内部进行的,浏览器并不知道,它的地址栏是不会变的
2、A、转发是可以携带数据的,也就是说在转发servlet之间可以共享数据的(常用request)
     B、重定向不能携带数据,因为重定向可以到另一个网站
3、A、转发只能在本站点内之间
   B、重定向可以到任何URL
注意: 转发不需要带项目名,重定向需要带项目名
三、Cookie简单用法
创建: Cookie cookie = new Cookie("name",value);
cookie.getName();//获取Name
cookie.getValue("name");//获取name对应的值
Cookie与Session的关系
Cookie 存储一个键值对,主要用途识别浏览器端用户的身份和保存一些信息,例如用户名和密码。
Session:表示一次回话,可以包含多次请求。
原理:
    由于Http是无状态的协议,意味着每个请求都是相对独立的,那么服务器就需要一种机制来识别具体用户,
所以Session和Cookie油然而生(当然有其他方法来实现这一机制),服务端要为特定的用户来创建特定的Session,保存在服务器中。
而Cookie就是在浏览器和服务器之间来回跑,里面包含Session ID,用来标识特定的用户。
当第一次浏览器向服务器发送一个请求时,服务器会为用户创建一个Session,并会向响应中添加一个Cookie,该Cookie中包含Sesson ID。
浏览器收到响应后,会把Cookie保存下来,在下次再次向该网站发送请求时,会携带Cookie(其中包含Session ID),
服务器收到请求后,可以依据Cookie中的Session iD来识别特定的用户。

详细资料:http://www.blogjava.net/cheneyfree/archive/2007/05/26/120168.html

你可能感兴趣的:(servlet总结)