JavaWeb体系结构的理解-5.Servlet与过滤器
Servlet
Servlet是运行于Web服务器端的Java应用程序,它使用Java语言编写,具有Java语言的优点。不同于其他Java程序,Servlet具有对HTTP进行处理的能力,但其运行需要Web容器的支持。
Servlet和JSP的差别在于:1.JSP更具有显示层的角色2.JSP符合脚本语言特点,通过JSP内置对象编程。Servlet是遵循的API标准,使用Servlet的API编程。3.速度上Servlet较快,因为它不是动态编译的。
Servlet继承自GenericServlet,而GenericServlet实现了接口ServletCofing、Servlet和Serializable。一般我们编写的Servlet都继承自Servlet的子类HttpServlet,HttpServlet实现了Servlet,并且对HTTP请求处理作出定义。HttpServlet的方法为do[Get|Post|Put],这三个方法处理提交的请求。HttpRequest封装了Http请求,通过它可以获取用户端传递的Http请求参数,他的方法有get[ContextPath|Cookies|Method|QueryString|Request|Session]。HttpResponse封装了http的请求回应,通过它可以向客户端发送回应,其常用方法为send[Error|Redirect]、addCookie等。
在创建了继承自HttpServlet的Servlet后,还必须在Web.xml中对它进行配置,使用<servlet>标签配置servlet对象,<servlet-mapping>配置Servlet映射。
Servlet的处理流程是:客户端请求Web容器,容器创建客户端对应的ServletRequest与ServletResponse对象,在创建完成后,容器调用HttpServlet的相关方法(do[Post|Get|Put]),do方法获取ServletRequst的参数,进行处理后使用ServletResponse同志Web容器对客户端返回响应,Web容器销毁ServletResponse和ServletRequest对象,完成请求处理过程。
以用户登录为例说明以上步骤:
Servlet代码如下:
<filter> <filter-name>characterFilter</filter-name> <filter-class>www.gongqingkui.cn.characterFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>characterFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
这样所有的请求都转发到过滤器中,转变为汉字编码处理后再使用。
参考文献
1. JavaWeb体系结构的理解-1.基础
2. JavaWeb体系结构的理解-2.JSP语法
3. JavaWeb体系结构的理解-3.JSP内置对象
4. JavaWeb体系结构的理解-4.JavaBean技术