广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx

上传人:b****8 文档编号:29827214 上传时间:2023-07-27 格式:DOCX 页数:34 大小:1.06MB
下载 相关 举报
广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx_第1页
第1页 / 共34页
广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx_第2页
第2页 / 共34页
广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx_第3页
第3页 / 共34页
广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx_第4页
第4页 / 共34页
广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx

《广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx》由会员分享,可在线阅读,更多相关《广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx(34页珍藏版)》请在冰豆网上搜索。

广东商学院 web开发实验项目五 Servlet技术开发实验Web.docx

广东商学院web开发实验项目五Servlet技术开发实验Web

实验报告

课程名称Web开发技术

实验项目名称实验项目五

Servlet技术开发实验

班级与班级代码(2012-2013-1)-113283-11006-2

实验室名称(或课室)实验楼403

专业2010信息管理与信息系统1班

任课教师傅清波

学号:

姓名:

实验日期:

2012年11月13日

广东商学院教务处制

姓名实验报告成绩

评语:

项目等级

评分

实验态度(10)

对实验内容积极准备,认真预习,无迟到早退现象。

对实验内容有所准备、预习,无迟到早退现象。

对实验内容无准备、预习,有迟到早退现象。

 

实验原理(10)

对相关技术原理理解正确,知识掌握充分。

对相关技术原理和知识能够正确理解。

对相关技术原理和知识不理解。

 

操作结果(10)

能够按照正确的实验步骤进行操作,并得出正确的实验结果。

全部完成,正确率90%以上。

能够按照正确的实验步骤进行操作,并得出正确的实验结果。

正确率70%以上。

实验操作步骤有误,实验结果正确率60%以下。

 

实验分析(40)

对思考分析题能进行正确的实验验证,正确率90%以上。

对思考分析题能进行正确的实验验证,正确率70%以上。

对思考分析题有实验验证,正确率60%以下。

 

实验总结(20)

对相关技术重点难点问题解决能够深刻领会,举一反三,感受真实。

对相关技术重点难点问题解决能够领会,感受真实。

对相关技术重点难点问题认识模糊,感受不真实。

 

报告格式(10)

格式规范,组成部分完整,内容充实。

格式规范,组成部分完整。

格式不规范,组成部分不完整。

 

实验成绩

 

 

 

 

 

指导教师(签名)

年月日

说明:

指导教师评分后,实验报告交院(系)办公室保存。

实验项目五Servlet技术开发实验

一、实验目的

1、了解和掌握Servlet接口的使用方法;

2、掌握Servlet的配置方法;

3、掌握Web监听的常用的方法;

4、掌握Web应用过滤器的开发方法。

二、实验内容

参照教材第7章内容,完成一个Servlet程序的开发和配置过程。

参照教材第8章内容,创建Web监听和过滤程序。

三、实验原理

Servlet技术原理、Web监听和过滤原理。

四、实验环境

电脑主机CPUintelcorei5-2450m、RAM6G,操作系统Windows764位,开发工具Myeclipse8.5。

五、实验步骤

(一)Servlet程序的开发和配置过程

1、打开Myeclipse8.5软件,新建一个web工程“jsp56”;

图1:

新建“jsp56”工程

2、在src文件夹下新建一个com包;

图2:

新建“com”包

3、在com包下新建一个servlet,配置如下图,输入源代码并保存;

图3:

新建servlet并配置

图4:

输入源代码

4、运行工程“jsp56”,在浏览器中输入链接http:

//127.0.0.1:

8080/jsp56/hello访问;

 

(二)创建Web监听

1、在com包下新建一个MyServletContextListener类,输入代码并保存;

图5:

新建MyServletContextListener类

图6:

输入源代码并保存

2、编辑WebRoot/WEB-INF/web.xml文件,部署监听器;

图7:

部署监听器

3、编写测试程序test.jsp对其进行测试,输入代码并保存;

图8:

新建test.jsp

3、在浏览器中输入链接http:

//127.0.0.1:

8080/jsp56/test.jsp访问,访问成功后可在C盘下浏览执行的结果记录test.txt;

4、实现监听HTTP会话,在com包下新建一个SessionListener类;

5、新建index.jsp、display.jsp、session.jsp、login.jsp、logout.jsp、end.jsp等页面并输入代码:

图9:

新建JSP页面

6、编辑WebRoot/WEB-INF/web.xml文件,部署监听器;

图10:

部署监听器

(三)创建过滤程序

1、在com包下新建一个EncodingFilter类,输入代码并保存;

图11:

新建一个EncodingFilter类

2、编辑WebRoot/WEB-INF/web.xml文件,部署过滤器;

图12:

部署过滤器

图13:

声明过滤器初始函数

3、新建SignonFilter.java

图14:

新建SignonFilter类

4、配置auth过滤器

图15

图16

图17

图15-图17:

配置auth过滤器

 

六、实验结果

(一)通过配置和调试,“Servlet程序的开发和配置实验”的结果如下:

图18:

最终实验结果页面

(二)通过配置和调试,“创建web监听程序”的结果如下:

图19:

访问test.jsp

图20:

保存执行结果记录的test.txt文件

(三)过滤程序测试结果

1、访问http:

//127.0.0.1:

8080/jsp56/index.jsp,控制台提示如下信息:

2、在首页输入名称与事件,点击提交,进入session.jsp页面,控制台提示如下信息:

七、实验分析

对于servlet技术,需要先写一个相应的java类,然后需要在web.xml文件中增加对servlet的描述,最后就可实现对servlet的访问。

而对于web监听,通过创建监听程序对某些动作进行监听,同样需要在web.xml文件中对其进行描述。

最后是过滤器的开发,过滤器是客户端发来请求所要经历的第一道关卡,可以实现多种功能,比如完成可以验证客户是否来自可信的网络,对数据重新编码,获得系统配置信息等。

与servlet和监听程序一样,它也需要在web.xml文件中进行描述才能正常工作

工程中包含的文件如下图所示:

 

八、实验结论

在本次实验中,最重要的对web.xml文件的配置,不管是servlet、Filter还是Listeners,若在web.xml文件中对其配置错误,都可能造成网站访问异常。

同时通过此次实验,能了解和掌握servlet、监听器、过滤器的基本原理。

为以后的JSP编程巩固基础。

附源代码:

//EncodingFilter.java(\jsp56\src\com)

packagecom;

importjavax.servlet.FilterChain;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjava.io.IOException;

importjavax.servlet.Filter;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.ServletException;

importjavax.servlet.FilterConfig;

publicclassEncodingFilterimplementsFilter

{

protectedFilterConfigfilterConfig;

privateStringtargetEncoding="gb2312";

/**

*初始化过滤器,和一般的Servlet一样,它也可以获得初始参数。

*/

publicvoidinit(FilterConfigconfig)throwsServletException{

this.filterConfig=config;

this.targetEncoding=config.getInitParameter("encoding");

}

/**

*进行过滤处理,这个方法最重要,所有过滤处理的代码都在此实现。

*/

publicvoiddoFilter(ServletRequestsrequest,ServletResponsesresponse,FilterChainchain)

throwsIOException,ServletException{

System.out.println("使用以下方法对请求进行编码:

encoding="+targetEncoding);

HttpServletRequestrequest=(HttpServletRequest)srequest;

request.setCharacterEncoding(targetEncoding);

//把处理权发送到下一个

chain.doFilter(srequest,sresponse);

}

publicvoidsetFilterConfig(finalFilterConfigfilterConfig)

{

this.filterConfig=filterConfig;

}

//销毁过滤器

publicvoiddestroy()

{

this.filterConfig=null;

}

}

//HelloWorldServlet.java(\jsp56\src\com)

packagecom;

importjava.io.*;

importjavax.servlet.*;

importjavax.servlet.http.*;

publicclassHelloWorldServletextendsHttpServlet

{

publicvoiddoGet(HttpServletRequestrequest,

HttpServletResponseresponse)

throwsIOException,ServletException

{

response.setContentType("text/html;charset=gb2312");

PrintWriterout=response.getWriter();

out.println("");

out.println("");

out.println("HelloWorld");

out.println("");

out.println("");

out.println("


");

out.println("HelloWorld");

out.println("你好!

世界");

out.println("");

}

publicvoiddoPost(HttpServletRequestrequest,

HttpServletResponseresponse)

throwsIOException,ServletException

{

doGet(request,response);

}

}

//MyRequestListener.java(\jsp56\src\com)

packagecom;

importjavax.servlet.*;

publicclassMyRequestListener

implementsServletRequestListener,ServletRequestAttributeListener

{

//ServletRequestListener

publicvoidrequestDestroyed(ServletRequestEventsre)

{

logout("requestdestroyed");

}

publicvoidrequestInitialized(ServletRequestEventsre)

{

logout("requestinit");

ServletRequestsr=sre.getServletRequest();

if(sr.getRemoteAddr().startsWith("127"))sr.setAttribute("isLogin",newBoolean(true));

elsesr.setAttribute("isLogin",newBoolean(false));

}//ServletRequestListener

//ServletRequestAttributeListener

publicvoidattributeAdded(ServletRequestAttributeEventevent)

{

logout("attributeAdded('"+event.getName()+"','"+

event.getValue()+"')");

}

publicvoidattributeRemoved(ServletRequestAttributeEventevent)

{

logout("attributeRemoved('"+event.getName()+"','"+

event.getValue()+"')");

}

publicvoidattributeReplaced(ServletRequestAttributeEventevent)

{

logout("attributeReplaced('"+event.getName()+"','"+

event.getValue()+"')");

}//ServletRequestAttributeListener

privatevoidlogout(Stringmsg)

{

java.io.PrintWriterout=null;

try

{

out=newjava.io.PrintWriter(newjava.io.FileOutputStream("c:

\\request.txt",true));

out.println(msg);

out.close();

}

catch(Exceptione)

{

out.close();

}

}

}

//MyServletContextListener.java(\jsp56\src\com)

packagecom;

importjavax.servlet.ServletContextEvent;

importjavax.servlet.ServletContextListener;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletContextAttributeEvent;

importjavax.servlet.ServletContextAttributeListener;

importjava.io.*;

 

publicfinalclassMyServletContextListener

implementsServletContextListener,ServletContextAttributeListener{

privateServletContextcontext=null;

/**

*以下代码实现ServletContextListener接口。

*/

publicvoidcontextDestroyed(ServletContextEventsce){

logout("contextDestroyed()-->ServletContext被销毁");

this.context=null;

}

publicvoidcontextInitialized(ServletContextEventsce){

this.context=sce.getServletContext();

logout("contextInitialized()-->ServletContext初始化了");

}//ServletContextListener

/**

*以下代码实现ServletContextAttributeListener接口

*/

publicvoidattributeAdded(ServletContextAttributeEventscae){

logout("增加了一个ServletContext属性:

attributeAdded('"+scae.getName()+"','"+

scae.getValue()+"')");

}

publicvoidattributeRemoved(ServletContextAttributeEventscae){

logout("删除了一个ServletContext属性:

attributeRemoved('"+scae.getName()+"','"+

scae.getValue()+"')");

}

 

publicvoidattributeReplaced(ServletContextAttributeEventscae){

logout("某个ServletContext的属性被改变:

attributeReplaced('"+scae.getName()+"','"+

scae.getValue()+"')");

}

privatevoidlogout(Stringmessage){

PrintWriterout=null;

try

{

out=newPrintWriter(newFileOutputStream("c:

\\test.txt",true));

out.println(newjava.util.Date().toLocaleString()+":

:

FormContextListener:

"+message);

out.close();

}

catch(Exceptione)

{

out.close();

e.printStackTrace();

}

}

}

//SessionListener.java(\jsp56\src\com)

packagecom;

importjava.util.Hashtable;

importjava.util.Iterator;

importjavax.servlet.http.HttpSession;

importjavax.servlet.http.HttpSessionEvent;

importjavax.servlet.http.HttpSessionListener;

publicclassSessionListenerimplementsHttpSessionListener{

//集合对象,保存session对象的引用

staticHashtableht=newHashtable();

//实现HttpSessionListener接口,完成session创建事件控制

publicvoidsessionCreated(HttpSessionEventarg0){

HttpSessionsession=arg0.getSession();

ht.put(session.getId(),session);

System.out.println("createsession:

"+session.getId());

}

//实现HttpSessionListener接口,完成session销毁事件控制

publicvoidsessionDestroyed(HttpSessionEventarg0){

HttpSessionsession=arg0.getSession();

System.out.println("destorysession:

"+session.getId());

ht.remove(session.getId());

}

//返回全部session对象集合

staticpublicIteratorgetSet(){

returnht.values().iterator();

}

//依据sessionid返回指定的session对象

staticpublicHttpSessiongetSession(StringsessionId){

return(HttpSession)ht.get(sessionId);

}

}

 

//SignonFilter.java(\jsp56\src\com)

packagecom;

importjavax.servlet.FilterChain;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjava.io.IOException;

importjavax.servlet.Filter;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.ServletException;

importjavax.servlet.FilterConfig;

importjavax.servlet.http.HttpSession;

publicclassSignonFilterimplementsFilter

{

StringLOGIN_PAGE="login_signon.jsp";

protectedFilterConfigfilterConfig;

//过滤处理的方法

publicvoiddoFilter(finalServletRequestreq,finalS

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 水产渔业

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1