Java Web servlet理解
2016-02-25 09:38
477 查看
前言:按照习惯,首先上个demo。
一个servlet例子:
第一步:java代码:
package com.zhoum.intelligentler.servlet;
public class DownloadServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
String queryString = req.getQueryString();
Map<String, String> map = QueryStringUtil.createQueryMap(queryString);
String src = map.get("src");
String dst = map.get("dst");
String md5 = map.get("md5");
System.out.println("传入的src为:" + src);
System.out.println("传入的dst为:" + dst);
System.out.println("传入的md5为:" + md5);
PrintWriter pw = resp.getWriter();
pw.println("传入的src为:" + src);
pw.println("传入的dst为:" + dst);
pw.println("传入的md5为:" + md5);
pw.flush();
pw.close();
}
}
第二步:web.xml文件:在web.xml文件中配置写好的servlet即服务器端的代码。
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"
version="2.5">
<display-name>intelligentler</display-name>
<servlet>
<servlet-name>downloadservlet</servlet-name><!--两个name名字应该一样-->
<servlet-class>com.zhoum.intelligentler.servlet.DownloadServlet</servlet-class>
<!--class中写的是DownloadServlet的绝对路径-->
</servlet>
<servlet-mapping>
<servlet-name>downloadservlet</servlet-name>
<url-pattern>/servlet/download</url-pattern><!--通过这个url来访问服务器端代码-->
</servlet-mapping>
</web-app>
第三步:启动tomcat服务器,输入网址:http://localhost:8080/intelligentler/servlet/download
从以上的demo可以看出,用户通过输入url(url-pattern)来定位到对应的servlet-name,然后再从servlet-name对应到servlet-name的绝对路径servlet-class,来执行服务器段代码DownloadServlet.
一、有两种应用程序
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
一个servlet例子:
第一步:java代码:
package com.zhoum.intelligentler.servlet;
public class DownloadServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
String queryString = req.getQueryString();
Map<String, String> map = QueryStringUtil.createQueryMap(queryString);
String src = map.get("src");
String dst = map.get("dst");
String md5 = map.get("md5");
System.out.println("传入的src为:" + src);
System.out.println("传入的dst为:" + dst);
System.out.println("传入的md5为:" + md5);
PrintWriter pw = resp.getWriter();
pw.println("传入的src为:" + src);
pw.println("传入的dst为:" + dst);
pw.println("传入的md5为:" + md5);
pw.flush();
pw.close();
}
}
第二步:web.xml文件:在web.xml文件中配置写好的servlet即服务器端的代码。
<?xml version="1.0" encoding="UTF-8"?>
<web-app
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID"
version="2.5">
<display-name>intelligentler</display-name>
<servlet>
<servlet-name>downloadservlet</servlet-name><!--两个name名字应该一样-->
<servlet-class>com.zhoum.intelligentler.servlet.DownloadServlet</servlet-class>
<!--class中写的是DownloadServlet的绝对路径-->
</servlet>
<servlet-mapping>
<servlet-name>downloadservlet</servlet-name>
<url-pattern>/servlet/download</url-pattern><!--通过这个url来访问服务器端代码-->
</servlet-mapping>
</web-app>
第三步:启动tomcat服务器,输入网址:http://localhost:8080/intelligentler/servlet/download
从以上的demo可以看出,用户通过输入url(url-pattern)来定位到对应的servlet-name,然后再从servlet-name对应到servlet-name的绝对路径servlet-class,来执行服务器段代码DownloadServlet.
一、有两种应用程序
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
相关文章推荐
- SpringMVC源码解读之HandlerMapping - AbstractUrlHandlerMapping系列request分发
- java web JSP语法详解
- jsp值传到后台Struts2中的action三种方法
- eclipse 出现the user operation is waiting for "Building workspace" to comlete 卡死
- struts基础
- SpringMVC源码解读之HandlerMapping
- Spring Security的核心拦截器
- springmvc注解配置详解及其demo代码下载
- JAVA三大特性初解
- 用Spring MVC实现用户登录的完整实例
- java,练习
- eclipse中console的输出行数控制
- 临远的spring security教程
- JDK安装与环境变量配置
- spring security原理图及其解释
- 解决eclipse中出现Resource is out of sync with the file system问题
- java 中如何使用 json 和jsonArray
- Java集合:ArrayList使用详解及源码分析
- JAVA复合语句
- java使用iText生成pdf表格