1、servlet实验实验报告(三)院系:信息学院 课程名称:Web数据库技术 日期:班 级信息A1022姓 名专 业信息管理与信息系统学 号29实 验 室实验名称Servlet应用成 绩 评 定教 师 签 名实验目的1、掌握servlet的配置方法2、掌握web服务器的配置过程3、掌握HttpServlet类的用法4、掌握session等对象的用法5、掌握请求转发功能的应用6、掌握SerlvetConfig上下文的用法实验内容Servlet配置、servlet设计、会话管理、请求流转、上下文应用实验过程、结果及分析一、1、请建立一个servlet类用于显示当前的系统时间。写出它的url配置写法p
2、ackage servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;public class servletDate extends HttpServl
3、et public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException request.setCharacterEncoding(UTF-8); response.setCharacterEncoding(UTF-8); response.setContentType(text/html); PrintWriter out = response.getWriter(); String dateString=null; Date date
4、=new Date(); dateString=date.toLocaleString(); out.print(当前时间是:+dateString); out.flush(); out.close(); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException url配置方法:首先在servlet包下新建servlet类:servletDate servletDate servlet.servletDate 然后进行映射,第
5、一个斜杠是web应用的根路径; servletDate /servlet/servletDate 实验过程、结果及分析二、1、请输入用户名和密码,如果用户名和密码是“zhangsan”和”123456”,则进入一个欢迎界面,否则要求用户重新输入。涉及的方法:(1)response.sendRedirect(login.htm); (2)request.getRequestDispatcher(welcome.htm).forward(request, response); (3) HttpSession session = request.getSession();session.setAtt
6、ribute(islogin, true); (4)boolean isLogin=session.getAttribute(islogin); Login.html: MyHtml.html !- This is my HTML page. 用户名 密码 Welcome.javapackage servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet
7、;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class Welcome extends HttpServlet public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException this.doPost(requ
8、est, response); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException HttpSession session=request.getSession(); String isLogin=(String) session.getAttribute(isLogin); response.setContentType(text/html); PrintWriter out = response.getWriter(
9、); out.println(); out.println(); out.println( A Servlet); out.println();out.println(欢迎进入Java Web世界!); out.println(isLogin:+isLogin); out.println( ); out.println(); out.flush(); out.close(); Login.javapackage servlet;import java.io.IOException;import java.io.PrintWriter;import java.util.Date;import j
10、avax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class login1 extends HttpServlet public void doGet(HttpServletRequest request, HttpServletRespon
11、se response) throws ServletException, IOException this.doPost(request, response); public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException request.setCharacterEncoding(UTF-8);/字符编码问题,解决中文乱码问题 response.setCharacterEncoding(UTF-8); String Name=r
12、equest.getParameter(name); String Pwd=request.getParameter(pwd); if(zhangsan.equals(Name)&123456.equals(Pwd) HttpSession session=request.getSession(); session.setAttribute(isLogin, true); request.getRequestDispatcher(/welcome).forward(request, response);/转发 else response.sendRedirect(request.getCont
13、extPath()+/login1.html);/重定向 2、领会多用户并发访问的机制,请建立一个HttpServlet“servletUsers”类,在该类的成员代码如下:public class serveltUsers extends HttpServlet private Integer x=1; public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException this.doPost(request, response); p
14、ublic void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException response.setContentType(text/html); response.setCharacterEncoding(utf-8); PrintWriter out = response.getWriter(); out.println(); out.println(); out.println( A Servlet); out.println( ); ou
15、t.println(当前x的值是+x); out.flush(); synchronized (x) Thread thread=Thread.currentThread(); try thread.sleep(1000*5); catch (InterruptedException e) / TODO Auto-generated catch block e.printStackTrace(); x+; out.println(当前serlvet实例阻塞5秒后,当前x的值是+x); out.println( ); out.println();out.flush(); out.close();
16、 请在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
17、应用没有登入时,要求用户必须进入登入页面。package filter;import java.io.IOException;import java.util.Date;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 ja
18、vax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class encoderFilter implements Filter/过滤器的使用 public void destroy() /销毁,在销毁之前可以保存数据到数据库 public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throw
19、s IOException, ServletException HttpServletRequest request=(HttpServletRequest)req; HttpServletResponse response=(HttpServletResponse)res; request.setCharacterEncoding(UTF-8);/字码设置,解决乱码问题 response.setCharacterEncoding(utf-8); HttpSession session=request.getSession(); if(session.isNew() response.send
20、Redirect(request.getContextPath()+/login.html);/重定向 chain.doFilter(request, response); /过滤器的方法 public void init(FilterConfig arg0) throws ServletException /初始化方法 配置WEB.xml encoder filter.encoderFilter encoder /* 过滤web应用下的文件 2、请设计一种机制进行网站访问者统计监听器类package Listener;import javax.servlet.ServletContext;i
21、mport javax.servlet.ServletContextEvent;import javax.servlet.ServletContextListener;import javax.servlet.http.HttpSession;import javax.servlet.http.HttpSessionEvent;import javax.servlet.http.HttpSessionListener;public class application implements ServletContextListener,HttpSessionListener public voi
22、d contextDestroyed(ServletContextEvent sce) / TODO Auto-generated method stub public void contextInitialized(ServletContextEvent sce) / TODO Auto-generated method stub ServletContext application=sce.getServletContext(); application.setAttribute(count, 0); System.out.print(web 应用初始化*); public void se
23、ssionCreated(HttpSessionEvent se) / TODO Auto-generated method stub System.out.print(一个新的session对象产生*); ServletContext application=se.getSession().getServletContext(); HttpSession session=se.getSession(); session.setAttribute(count, 10); Integer count =(Integer)application.getAttribute(count); int c
24、ou=count+1; application.setAttribute(count, cou); public void sessionDestroyed(HttpSessionEvent se) / TODO Auto-generated method stub 统计类:package servlet;import java.io.IOException;import java.io.PrintWriter;import javax.servlet.ServletContext;import javax.servlet.ServletException;import javax.servl
25、et.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;public class hello3 extends HttpServlet /* * The doGet method of the servlet. * * This method is called when a form has its tag value method equals to get. * * param request the request send by the client to the server * param response the response send by the server to the client * throws ServletException if an error occurred * throws IOException if an error occurred */ public void doGet(HttpServletRequest request, HttpServle
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1