Servlet应用
一、实验目的和要求
- 了解Servlet的工作原理和生命周期;
- 理解Servlet的常用接口和类;
- 了解过滤器和监听器的作用;
- 了解过滤器链。
- 掌握过滤器和监听器的开发与部署的步骤;
- 掌握过滤器和监听器的应用。
二、实验内容
- 编写一个过滤器改变请求编码。
- 编写一个ServletRequestListener事件监听器,记录某个页面自应用程序启动以来被访问的次数。
三、实验原理
- 过滤器是Web服务器上的组件,它们对客户和资源之间的请求和响应进行过滤。
- 过滤器的工作原理是:当Servlet容器接收到对某个资源的请求,它要检查是否有过滤器与之关联。如果有过滤器与该资源关联,Servlet容器将把该请求发送给过滤器。在过滤器处理完请求后,它将做下面3件事:
产生响应并将其返回给客户;
如果有过滤器链,它将把(修改过或没有修改过)请求传递给下一个过滤器;
将请求传递给不同的资源。
当请求返回到客户时,它是以相反的方向经过同一组过滤器返回。过滤器链中的每个过滤器够可能修改响应。 - 过滤器API主要包括:Filter、FilterConfig和FilterChain接口。
- 在Web应用程序中,事件的处理也是通过事件监听器接口处理的。Web应用事件处理的原理为:当Web应用中某些状态改变时,Servlet容器就产生某种事件,如ServletContext对象初始化时会产生ServletContextEvent事件,此时Servlet容器就会从注册的事件监听器中寻找处理该事件的监听器对象,并执行相应的代码。
- 在Servlet 2.4规范中共定义了6种事件类型和8个事件监听器接口,它们可以处理三种对象上的事件ServletContext、HttpSession和ServletRequest。
四、实验步骤
过滤器:
1.在java resource里新建Filter类,包名为ycu.sxxy.lxq.filter,类名为EncodeingFilter.java,然后根据要求编辑代码。
2.在java resource里新建Servlet类,包名为ycu.sxxy.lxq.servlet,类名为EncodeServlet.java,然后根据要求编辑代码。
3.在工程下新建jsp文件。
4.在java文件和jsp文件下写代码,用HTML语言布局,并不断调试。
5.整理个页面,修改布局更美观。
监听器:
1.在java resource里新建Listener类,包名为ycu.sxxy.lxq.Listener,类名为RequestListener.java,然后根据要求编辑代码。
2.在工程下新建jsp文件。
3.在java文件和jsp文件下写代码,用HTML语言布局,并不断调试。
4.整理个页面,修改布局更美观。
五、参考程序
- 过滤器
(1)新建过滤器类EncodingFilter.java
package ycu.sxxy.lxq.filter;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
/**
* Servlet Filter implementation class EncodingFilter
*/
@WebFilter(
urlPatterns = {
"/*"
},
initParams = {
@WebInitParam(name = "Charset", value = "UTF-8")
})
public class EncodingFilter implements Filter