电机javaweb实验六 Servlet实验二bx1312韩锟45.docx
- 文档编号:30686229
- 上传时间:2023-08-19
- 格式:DOCX
- 页数:12
- 大小:396.91KB
电机javaweb实验六 Servlet实验二bx1312韩锟45.docx
《电机javaweb实验六 Servlet实验二bx1312韩锟45.docx》由会员分享,可在线阅读,更多相关《电机javaweb实验六 Servlet实验二bx1312韩锟45.docx(12页珍藏版)》请在冰豆网上搜索。
电机javaweb实验六Servlet实验二bx1312韩锟45
实验六Servlet实验
(二)
一、实验目的
学习编写和配置过滤器。
学习使用context、application对象。
二、实验要求
利用Filter实现一个网页计数器。
本次实验需要编写1个JSP文件:
index.jsp,和一个Filter:
CountFilter.java。
要求实现功能:
利用浏览器请求index.jsp,页面显示效果如下。
点击刷新按钮,访客数字会相应增长。
三、实验步骤
1.编写Filter代码
用户自定义的Filter是一个类。
这个类实现Filter接口。
Filter接口的定义:
javax.servlet.Filter
publicabstractinterfacejavax.servlet.Filter{
publicabstractvoidinit(javax.servlet.FilterConfigarg0)throwsjavax.servlet.ServletException;
publicabstractvoiddoFilter(javax.servlet.ServletRequestarg0,javax.servlet.ServletResponsearg1,javax.servlet.FilterChainarg2)
throwsjava.io.IOException,javax.servlet.ServletException;
publicabstractvoiddestroy();
}
本次实验需要覆盖init()和doFilter()方法。
在init()方法中,从初始化参数中取出计数变量的初值。
代码提示:
String*1*=filterConfig.getInitParameter("变量名");
将取出的String类型的初值转换为int型变量,用于计算
代码提示:
int*2*=*1*.parseInt();
在doFilter方法中。
需要将*2*变量值加一(记为*3*),将*3*写入servletContext
代码提示:
1、为了获得servletContext,首先将doFilter()方法中的第一个参数arg0转换为HttpServletRequest.
HttpServletRequestrequest=(HttpServletRequest)arg0
2、通过request获得session,并通过session获得servletContext
ServletContext*=request.getSession().getServletContext();
3、把*3*变量作为属性写入servletContext.
servletContext.setAttribute(“属性名”,“属性变量”);
4、执行doFilter()方法
arg2.doFilter(ServletRequestreq,ServletResponseresp);
编写web.xml部署描述文件。
文件的大致结构
2.编写JSP代码
编写一个index.jsp文件,输出效果如下图:
访客数量利用application对象从servletContext中取出属性得到。
代码提示:
application.getParameter(“属性名”);
3.部署项目并运行JSP
部署:
Eclipse中设置的输出根目录,根据具体设置更改
写一个与你的项目同名的xml文件。
文件内容:
docBase="项目存放路径\WebContent"> 启动Tomcat服务器 通过开始菜单>>“apachetomcat”>>“monitortomcat”。 可以在任务栏右下角看到这个图标, ,右键单击这个图标,选择“startservice”,可启动Tomcat服务器,服务器启动后,图标变为 。 查看运行结果 打开浏览器,在地址栏中输入相应的地址,可以看到我们编写的jsp文件在浏览器页面上的展示效果。 请求地址: http: //localhost: 8080/目录名/jsp文件名 四、实验报告要求 1. 2. 3. 4. 代码 Home.jsp: <%@pagelanguage="java"import="java.util.*"pageEncoding="UTF-8"%> <% Stringpath=request.getContextPath(); StringbasePath=request.getScheme()+": //"+request.getServerName()+": "+request.getServerPort()+path+"/"; %> DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">
--
-->
ThisismyJSPpage.
您好:
您是本站的第<%=application.getAttribute("count")%>位访客!
Web.xml:
xmlversion="1.0"encoding="UTF-8"?
>
xmlns=" xmlns: xsi="http: //www.w3.org/2001/XMLSchema-instance" xsi: schemaLocation=" 454.xml: xmlversion="1.0"encoding="UTF-8"? > \tomcat\webapps\454"> CounterFilter.java: packagecom.test.filter; importjava.io.IOException; importjavax.servlet.Filter; importjavax.servlet.FilterChain; importjavax.servlet.FilterConfig; importjavax.servlet.ServletContext; importjavax.servlet.ServletException; importjavax.servlet.ServletRequest; importjavax.servlet.ServletResponse; importjavax.servlet.http.HttpServletRequest; publicclassCountFilterimplementsFilter{ privateintcount; publicvoidinit(FilterConfigarg0)throwsServletException{ Stringparam=arg0.getInitParameter("count"); count=Integer.valueOf(param); } publicvoiddoFilter(ServletRequestarg0,ServletResponsearg1,FilterChainarg2)throwsIOException,ServletException{ count++; HttpServletRequestreq=(HttpServletRequest)arg0; ServletContextcontext=req.getSession().getServletContext(); context.setAttribute("count",count); arg2.doFilter(arg0,arg1); } publicvoiddestroy(){ }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 电机javaweb实验六 Servlet实验二bx1312韩锟45 电机 javaweb 实验 Servlet bx1312 韩锟 45