1、电机javaweb实验六 Servlet实验二bx1312韩锟45实验六 Servlet实验(二)一、实验目的学习编写和配置过滤器。学习使用context、application对象。二、实验要求 利用Filter实现一个网页计数器。本次实验需要编写1个JSP文件:index.jsp,和一个Filter:CountFilter.java。 要求实现功能: 利用浏览器请求index.jsp,页面显示效果如下。点击刷新按钮,访客数字会相应增长。三、实验步骤 1编写Filter代码 用户自定义的Filter是一个类。这个类实现Filter接口。 Filter接口的定义:javax.servlet.F
2、ilter public abstract interface javax.servlet.Filter public abstract void init(javax.servlet.FilterConfig arg0) throws javax.servlet.ServletException; public abstract void doFilter(javax.servlet.ServletRequest arg0, javax.servlet.ServletResponse arg1, javax.servlet.FilterChain arg2) throws java.io.I
3、OException, javax.servlet.ServletException; public abstract void destroy();本次实验需要覆盖init()和doFilter()方法。在init()方法中,从初始化参数中取出计数变量的初值。 代码提示:String *1* = filterConfig.getInitParameter(变量名);将取出的String类型的初值转换为int型变量,用于计算 代码提示:int *2* = *1*.parseInt();在doFilter方法中。需要将*2*变量值加一(记为*3*),将*3*写入servletContext 代码
4、提示:1、 为了获得servletContext,首先将doFilter()方法中的第一个参数arg0转换为HttpServletRequest. HttpServletRequest request = (HttpServletRequest)arg02、 通过request获得session,并通过session获得servletContext ServletContext * = request.getSession().getServletContext();3、 把*3*变量作为属性写入servletContext. servletContext.setAttribute(“属性名”
5、,“属性变量”);4、 执行doFilter()方法 arg2.doFilter(ServletRequest req,ServletResponse resp);编写web.xml部署描述文件。文件的大致结构 This is the description of my J2EE component This is the display name of my J2EE component 过滤器的名字 过滤器类的名字(包名类名) 初始化参数名 初始化参数的值 过滤器的名字 被过滤对象的url格式 2编写JSP代码 编写一个index.jsp文件,输出效果如下图:访客数量利用applicati
6、on对象从servletContext中取出属性得到。 代码提示:application.getParameter(“属性名”); 3部署项目并运行JSP部署:Eclipse中设置的输出根目录,根据具体设置更改写一个与你的项目同名的xml文件。文件内容:启动Tomcat服务器通过开始菜单“apache tomcat”“monitor tomcat”。可以在任务栏右下角看到这个图标,右键单击这个图标,选择“start service”,可启动Tomcat服务器,服务器启动后,图标变为。查看运行结果打开浏览器,在地址栏中输入相应的地址,可以看到我们编写的jsp文件在浏览器页面上的展示效果。请求地址
7、:http:/localhost:8080 / 目录名 / jsp文件名四、实验报告要求1.2.3.4. 代码Home.jsp: base href= My JSP home.jsp starting page !- - This is my JSP page. 您好:您是本站的第位访客! Web.xml:web-app version=3.0 xmlns= xmlns:xsi=http:/www.w3.org/2001/XMLSchema-instance xsi:schemaLocation= index.jsp CountFilter com.test.filter.CountFilte
8、r count 0 CountFilter /* 454.xml:CounterFilter.java:package com.test.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servlet.Servlet
9、Request;import javax.servlet.ServletResponse;import javax.servlet.http.HttpServletRequest;public class CountFilter implements Filter private int count; public void init(FilterConfig arg0) throws ServletException String param = arg0.getInitParameter(count); count = Integer.valueOf(param); public void
10、 doFilter(ServletRequest arg0, ServletResponse arg1,FilterChain arg2) throws IOException, ServletException count+; HttpServletRequest req = (HttpServletRequest) arg0; ServletContext context = req.getSession().getServletContext(); context.setAttribute(count, count); arg2.doFilter(arg0, arg1); public void destroy()
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1