Java Web servlet理解
一、有两种应用程序
1、桌面应用程序:需要下载,安装,更新等。如QQ,office等
2、web应用程序:就是我们开发的web项目,这不需要用户下载,只需要用户客户端联网,访问相应的互联网资源。
二、Http协议
HTTP是一个属于应用层的面向对象的超文本传输协议,基于TCP/IP协议,由于其简捷、快速的方式,适用于分布式超媒体信息系统。HTTP特点:
(1)无连接:分为4个阶段:建立连接、发送请求、等待响应、关闭连接
优点:快速、简单、不占用网络服务器资源
缺点:速度由网络来决定,每次传输数据量不能太大
(2)无状态:HTTP 协议只负责传输数据,不负责保管所传递的数据
Http访问服务器资源的方式
1、URL:(Uniform/Universal Resource Locator)统一资源定位符,请求的是服务器上的资源。资源是一个抽象的概念,指存放在服务器上的能够被客户端访问到的所有类型的文件(比如:文本、图片、音频、视频等)。
2、表单提交
get和post方法的区别
⑴get方法通过URL传递参数,用户在客户端地址栏可见,如果是传递密码的话,不安全;post方法通过请求的body传递参数,用户在客户端不可见,更安全。
⑵get方法通过地址栏URL传递请求,而URL本身有长度限制,一般不超过255个字符;post方法通过请求body传递参数,没有长度限制。
三、Servlet
1、Servlet概念:
首先Servlet是一个java应用程序----->服务器端的java应用程序----->具有独立于平台和协议的特性----->可生成动态的Web页面。
Servlet担当客户请求(Web浏览器或其他HTTP客户程序)与服务器响应(HTTP服务器上的数据库或应用程序)的中间层。客户请求<----->Servlet<------>服务器响应
2、Servlet生命周期
指Servlet对象在服务器内存中从创建到调用,到销毁的整个过程。
(1)实例化:当客户端通过URL请求的时候,web容器根据web.xml配置自动调用该Servlet的构造方法,实例化对象。
(2)初始化:通过该servlet对象调用init()方法,读取web.xml中该servlet的配置信息,为service方法提供相关数据。
(3)服务:通过该对象调用service()方法,如果是继承HttpServlet,则根据请求头信息中的请求方法,调用对应的doGet()/doPost()
(4)销毁:不是在service()方法调用完后,立即调用,而是由JVM来决定。当JVM需要销毁一些对象、释放内存空间的时候,才会去调用该实例的destroy()方法。
3、HttpServletRequest(interface)
公共接口类HttpServletRequest继承自ServletRequest.客户端浏览器发出的请求被封装成为一个HttpServletRequest对象。所有的信息包括请求的地址,请求的参数,提交的数据,上传的文件客户端的ip甚至客户端操作系统都包含在其内。
4、HttpServletResponse(interface)
代表服务器向浏览器返回的响应直接输出内容到浏览器,使用Servlet输出HTML页面
PrintWriter out = response.getWriter();
out.print("Hello :");
设置响应的内容类型:
response.setContentType("text/html; charset=UTF-8");
注意:使用response对象跳转,可以跳到项目外的一个URL资源上
如:response.sendRedirect(“http://www.baidu.com”);
使用request对象跳转,只能在本项目资源中跳转
如:request.getRequestDispatcher(“url”).forward(request,response);
告诉浏览器不要缓存页面:
页面刷新:单位是秒
5、javax.servlet.RequestDispatcher(interface)
对请求响应进行补充的一个接口,主要负责两个功能
RequestDispatcher disp = request.getRequestDispatcher("login_ok.jsp");
(1)跳转
disp.forward(ServletRequest,ServletResponse);
(2)包含
disp.include(ServletRequest,ServletResponse);
程序中一般连写:
request.getRequestDispatcher("login_ok.jsp").forward(request,response);
6、HttpSession(interface)
是在服务器端保存数据最常见的方式
Session:会话,(进行某活动连续的)一段时间,使用该对象可以完成一定的操作。会话信息的范围仅限于当前Web应用程序(
ServletContext
),因此存储在一个上下文中的信息在另一个上下文中不是直接可见的。
Ⅰ.Hibernate中Session和Servlet中HttpSession的区别
Hibernate中Session对象:主要作用是数据库连接、数据库操作
Servlet中HttpSession对象:
(1)帮助服务器,识别不同的浏览器
(2)帮助服务器传递数据到不同的Servlet或JSP页面
(3)能够人工控制连续的时间段的长短。
Ⅱ.HttpSession 对象的常用方法:
(1)创建
HttpSession session = request.getSession(true);
要求服务器端重新创建一个session对象
HttpSession session = request.getSession(false);
不需要服务器端新建session对象,只需要从已有的session中取一个
HttpSession session = request.getSession();
没有要求,由服务器自动分配
(2)识别浏览器
//随机生成一个不重复的id,随着响应发送给浏览器,绑定在浏览器中,每次浏览器请求,都会把该id返回并与服务器端的id对比
String id = session.getId();
(3)传递数据
//把数据存入session中
session.setAttribute("name",object);
//在其他Servlet或jsp页面中取出数据
Object obj = session.getAttribute("name");
一般情况下,需要先判断是否为空,再取值
(4)设置有效时间
一个session对象默认有30分钟的有效时间
//设置单个session对象的最长有效时间
session.setMaxInactiveInterval(60*60*24秒);
//设置整个工程中所有session的有效时间
<session-config>
<session-timeout>20000</session-timeout>
</session-config>
(5)清除数据
session.removeAttribute("name");
(6)设置Session失效或钝化
session.invalidate();
例如:
Session类似储物柜,最主要作用就是存取数据
寝室的储物柜:
(1)一人一个
(2)能够存取东西
(3)一般的一个柜子一把钥匙
(4)特殊情况,可以给柜子贴封条
(5)有时候柜子可能两个人或N个人共用
7、ServletContext(interface)
⑴ServletContext的定义
⑵ServletContext对象能够访问web项目的初始化参数、存储在ServletContext中的对象、web项目中的资源文件、日志;ServletContext就是Servlet容器,提供的方法可以在同一个web应用下的所有Servlet中使用。
8、ServletConfig(interface)
本文出自 “程序猿进阶攻城狮” 博客,请务必保留此出处http://zhoum1118.blog.51cto.com/10054110/1639322
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。