servlet实验.docx

上传人:b****6 文档编号:3786822 上传时间:2022-11-25 格式:DOCX 页数:17 大小:19KB
下载 相关 举报
servlet实验.docx_第1页
第1页 / 共17页
servlet实验.docx_第2页
第2页 / 共17页
servlet实验.docx_第3页
第3页 / 共17页
servlet实验.docx_第4页
第4页 / 共17页
servlet实验.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

servlet实验.docx

《servlet实验.docx》由会员分享,可在线阅读,更多相关《servlet实验.docx(17页珍藏版)》请在冰豆网上搜索。

servlet实验.docx

servlet实验

实验报告(三)

院系:

信息学院课程名称:

Web数据库技术日期:

班级

信息A1022

姓名

专业

信息管理与信息系统

学号

29

实验室

实验名称

Servlet应用

成绩评定

教师签名

实验目的

1、掌握servlet的配置方法

2、掌握web服务器的配置过程

3、掌握HttpServlet类的用法

4、掌握session等对象的用法

5、掌握请求转发功能的应用

6、掌握SerlvetConfig上下文的用法

实验内容

Servlet配置、servlet设计、会话管理、请求流转、上下文应用

一、

1、请建立一个servlet类用于显示当前的系统时间。

写出它的url配置写法

packageservlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjava.util.Date;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.Http

ServletRequest;

importjavax.servlet.http.HttpServletResponse;

 

publicclassservletDateextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

request.setCharacterEncoding("UTF-8");

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html");

PrintWriterout=response.getWriter();

StringdateString="null";

Datedate=newDate();

dateString=date.toLocaleString();

out.print("当前时间是:

"+dateString);

out.flush();

out.close();

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

}

}

url配置方法:

首先在servlet包下新建servlet类:

servletDate

servletDate

servlet.servletDate

然后进行映射,第一个斜杠是web应用的根路径;

servletDate

/servlet/servletDate

 

二、

1、请输入用户名和密码,如果用户名和密码是“zhangsan”和”123456”,则进入一个欢迎界面,否则要求用户重新输入。

涉及的方法:

(1)response.sendRedirect("login.htm");

(2)request.getRequestDispatcher("welcome.htm").forward(request,response);

(3)HttpSessionsession=request.getSession();

session.setAttribute("islogin",true);

(4)booleanisLogin=session.getAttribute("islogin");

Login.html:

DOCTYPEHTMLPUBLIC"-//W3C//DTDHTML4.01Transitional//EN">

MyHtml.html

---->

ThisismyHTMLpage.

用户名


 密码


 

Welcome.java

packageservlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

publicclassWelcomeextendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

HttpSessionsession=request.getSession();

StringisLogin=(String)session.getAttribute("isLogin");

response.setContentType("text/html");

PrintWriterout=response.getWriter();

out.println("

DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">");

out.println("");

out.println("AServlet");

out.println("

100px'>");

out.println("欢迎进入JavaWeb世界!

");

out.println("isLogin:

"+isLogin);

out.println("");

out.println("");

out.flush();

out.close();

}

}

Login.java

packageservlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjava.util.Date;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

publicclasslogin1extendsHttpServlet{

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

request.setCharacterEncoding("UTF-8");//字符编码问题,解决中文乱码问题

response.setCharacterEncoding("UTF-8");

StringName=request.getParameter("name");

StringPwd=request.getParameter("pwd");

if("zhangsan".equals(Name)&&"123456".equals(Pwd)){

HttpSessionsession=request.getSession();

session.setAttribute("isLogin","true");

request.getRequestDispatcher("/welcome").forward(request,response);//转发

}else{

response.sendRedirect(request.getContextPath()+"/login1.html");//重定向

}

}

}

2、领会多用户并发访问的机制,请建立一个HttpServlet——“servletUsers”类,在该类的成员代码如下:

publicclassserveltUsersextendsHttpServlet{

privateIntegerx=1;

publicvoiddoGet(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

this.doPost(request,response);

}

publicvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)

throwsServletException,IOException{

response.setContentType("text/html");

response.setCharacterEncoding("utf-8");

PrintWriterout=response.getWriter();

out.println("

DOCTYPEHTMLPUBLIC\"-//W3C//DTDHTML4.01Transitional//EN\">");

out.println("");

out.println("AServlet");

out.println("");

out.println("当前x的值是"+x);

out.flush();

synchronized(x){

Threadthread=Thread.currentThread();

try{

thread.sleep(1000*5);

}catch(InterruptedExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}x++;

out.println("当前serlvet实例阻塞5秒后,当前x的值是"+x);

out.println("");

out.println("");

out.flush();

out.close();

}

}

请在5秒内用两个浏览器窗口浏览该HttpServlet类,看看效果如何。

为什么是这个效果!

第一个窗口显示:

当前x的值是1当前serlvet实例阻塞5秒后,当前x的值是2

第二窗口显示:

当前x的值是2当前serlvet实例阻塞5秒后,当前x的值是3

分析与解析:

用户一访问x时,第一次x为初值1,用户一在休眠五秒钟内释放了对x的控制权,休眠后,当前x的值是3

用户二在五秒内再次访问x时,因为对核心语句加锁,必须等待用户一休眠后以及对x加1后才能访问x,这时用户二访问的x为已经加了1,值为2,当前serlvet实例阻塞5秒后,当前x的值是3

三、

1、请设计一种过滤器实现权限控制机制。

如果用户进入web应用没有登入时,要求用户必须进入登入页面。

packagefilter;

importjava.io.IOException;

importjava.util.Date;

importjavax.servlet.Filter;

importjavax.servlet.FilterChain;

importjavax.servlet.FilterConfig;

importjavax.servlet.ServletException;

importjavax.servlet.ServletRequest;

importjavax.servlet.ServletResponse;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

publicclassencoderFilterimplementsFilter{//过滤器的使用

publicvoiddestroy(){//销毁,在销毁之前可以保存数据到数据库

}

publicvoiddoFilter(ServletRequestreq,ServletResponseres,

FilterChainchain)throwsIOException,ServletException{

HttpServletRequestrequest=(HttpServletRequest)req;

HttpServletResponseresponse=(HttpServletResponse)res;

request.setCharacterEncoding("UTF-8");//字码设置,解决乱码问题

response.setCharacterEncoding("utf-8");

HttpSessionsession=request.getSession();

if(session.isNew()){

response.sendRedirect(request.getContextPath()+"/login.html");//重定向

}

chain.doFilter(request,response);//过滤器的方法

}

publicvoidinit(FilterConfigarg0)throwsServletException{//初始化方法

}

}

配置WEB.xml

encoder

filter.encoderFilter

encoder

/*过滤web应用下的文件

2、请设计一种机制进行网站访问者统计

监听器类

packageListener;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletContextEvent;

importjavax.servlet.ServletContextListener;

importjavax.servlet.http.HttpSession;

importjavax.servlet.http.HttpSessionEvent;

importjavax.servlet.http.HttpSessionListener;

publicclassapplicationimplementsServletContextListener,HttpSessionListener{

publicvoidcontextDestroyed(ServletContextEventsce){

//TODOAuto-generatedmethodstub

}

publicvoidcontextInitialized(ServletContextEventsce){

//TODOAuto-generatedmethodstub

ServletContextapplication=sce.getServletContext();

application.setAttribute("count",0);

System.out.print("web应用初始化**********");

}

publicvoidsessionCreated(HttpSessionEventse){

//TODOAuto-generatedmethodstub

System.out.print("一个新的session对象产生********");

ServletContextapplication=se.getSession().getServletContext();

HttpSessionsession=se.getSession();

session.setAttribute("count",10);

Integercount=(Integer)application.getAttribute("count");

intcou=count+1;

application.setAttribute("count",cou);

}

publicvoidsessionDestroyed(HttpSessionEventse){

//TODOAuto-generatedmethodstub

}

}

 

统计类:

packageservlet;

importjava.io.IOException;

importjava.io.PrintWriter;

importjavax.servlet.ServletContext;

importjavax.servlet.ServletException;

importjavax.servlet.http.HttpServlet;

importjavax.servlet.http.HttpServletRequest;

importjavax.servlet.http.HttpServletResponse;

importjavax.servlet.http.HttpSession;

publicclasshello3extendsHttpServlet{

/**

*ThedoGetmethodoftheservlet.

*

*Thismethodiscalledwhenaformhasitstagvaluemethodequalstoget.

*

*@paramrequesttherequestsendbytheclienttotheserver

*@paramresponsetheresponsesendbytheservertotheclient

*@throwsServletExceptionifanerroroccurred

*@throwsIOExceptionifanerroroccurred

*/

publicvoiddoGet(HttpServletRequestrequest,HttpServle

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

当前位置:首页 > 高中教育 > 语文

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

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