zoukankan      html  css  js  c++  java
  • servlet示例

    当用户向客户端发送一个请求,如:

    [plain] view plaincopy
    http://localhost:8088/ServApp/myreq.cg?param1=param  
     
    当Socket请求到达服务器(假设是Tomcat服务器),经过Tomcat服务器的一系列封装处理后,请求被封装成HttpServletRequest对象,交由到对应的Servlet。
    简单时序图如下:
     
     
    这里,我们只关注第10步。
    在第9步中,request对象传递给Container组件执行。
    当Servlet对象获得请求(httpservletrequest),会调用相关函数(Service)进行处理。
    下面编写一个简单示例,从说明当前步骤。
    1,编写请求处理类(EntryServ)
    [java]  
    package com.serv;  
      
    import java.io.IOException;  
    import java.io.PrintWriter;  
      
    import javax.servlet.RequestDispatcher;  
    import javax.servlet.ServletContext;  
    import javax.servlet.ServletException;  
    import javax.servlet.http.Cookie;  
    import javax.servlet.http.HttpServlet;  
    import javax.servlet.http.HttpServletRequest;  
    import javax.servlet.http.HttpServletResponse;  
      
    public class EntryServ extends HttpServlet {  
      
        /** 
         *  
         */  
        private static final long serialVersionUID = 1L;  
      
        @Override  
        protected void doGet(HttpServletRequest req, HttpServletResponse resp)  
                throws ServletException, IOException {  
            // TODO Auto-generated method stub  
            ServletContext serv = getServletContext();  
       
            //获得request 相关信息  
            String Contextpath=req.getContextPath();  
            String CharacterEncoding = req.getCharacterEncoding();  
            String ContentType = req.getContentType();  
            String LocalAddr = req.getLocalAddr();  
            String LocalName = req.getLocalName();  
            String Method = req.getMethod();  
            String Parameter = req.getParameter("param1");  
            String Protocol = req.getProtocol();  
            String ServerName = req.getServerName();  
            Cookie[] Cookies = req.getCookies();  
            String ServletPath = req.getServletPath();  
            String RemoteAddr = req.getRemoteAddr();  
            String RemoteHost = req.getRemoteHost();  
            String RequestURI = req.getRequestURI();  
            String RequestedSessionId = req.getRequestedSessionId();  
              
              
            req.setCharacterEncoding("gbk");  
            req.setAttribute("oneattr", "setted");  
              
            //response响应请求,输出请求的一些内容  
            resp.setContentType( "text/html;charset=gbk" ) ;  //设置响应页面字符编码  
            PrintWriter out = resp.getWriter() ;    
            out.println( "<font color=red ><h1>这是一个Servlet!!!!!</h1></font>" ) ;    
            out.println("<div>"+"现在用response输出请求相关信息如下:");  
            out.println("<li>"+"发送请求服务器ip--RemoteAddr="+RemoteAddr+"</li>");  
            out.println("<li>"+"发送请求服务器主机--RemoteHost="+RemoteHost+"</li>");  
            out.println("<li>"+"请求的URI--RequestURI="+RequestURI+"</li>");  
            out.println("<li>"+"发送请求的方法--Method="+Method+"</li>");  
            out.println("<li>"+"发送请求的协议--Protocol="+Protocol+"</li>");  
            out.println("<li>"+"请求内容的编码--CharacterEncoding="+CharacterEncoding+"</li>");  
            out.println("<li>"+"请求的内容类型--ContentType="+ContentType+"</li>");  
            out.println("<p>");  
            out.println("<li>"+"当前服务器ip--LocalAddr="+LocalAddr+"</li>");  
            out.println("<li>"+"服务器主机名--LocalName="+LocalName+"</li>");  
            out.println("<li>"+"context容器路径---contextpath="+Contextpath+"</li>");  
            out.println("<li>"+"Server容器名--ServerName="+ServerName+"</li>");  
            out.println("<li>"+"处理请求Servlet对应的url--ServletPath="+ServletPath+"</li>");  
            out.println("<li>"+"请求的附加参数--Parameter="+Parameter+"</li>");  
            out.println("</div>");  
            out.close() ;    
              
            //当此Servlet得到这个请求,可以选择自己处理,或者调用其他页面进行处理  
            //这里此Servlet将请求内容转给dealpage.jsp这个页面去处理请求。  
            //相当于本来表单提交给此servlet处理的,现在相当于做一个转向,让提交的表单给dealpage.jsp处理  
              
            //RequestDispatcher dispatcher = req.getRequestDispatcher("dealpage.jsp");  
            //dispatcher.forward(req, resp);  
              
            //super.doGet(req, resp);  
        }  
      
    }  
     
    请求内容为
    [html]  
    ServApp/myreq.cg?param1=param  
     
    故编辑web.xml,让上面的Servlet类能够获得当前的请求:
    [html]   
    <servlet>  
        <servlet-name>EntryServ</servlet-name>  
        <servlet-class>com.serv.EntryServ</servlet-class>  
    </servlet>  
    <servlet-mapping>  
        <servlet-name>EntryServ</servlet-name>  
        <url-pattern>/myreq.cg</url-pattern>  
    </servlet-mapping>  
     
    其中url-pattern用来映射请求的url,如果对应上,则会调用配置中对应的servlet。
    浏览器中输入请求:
    [plain] view plaincopy
    http://localhost:8088/ServApp/myreq.cg?param1=param  
     
    得到结果如下:
     
     
  • 相关阅读:
    scrapy基础知识之 使用FormRequest.from_response()方法模拟用户登录:
    scrapy基础知识之发送POST请求:
    scrapy基础知识之 CrawlSpiders(爬取腾讯校内招聘):
    scrapy基础知识之 CrawlSpiders:
    scrapy基础知识之 Logging:
    scrapy基础知识之将item 通过pipeline保存数据到mysql mongoDB:
    scrapy基础知识之 parse()方法的工作机制思考:
    scrapy基础知识之scrapy自动下载图片pipelines
    scrapy基础知识之将item写入JSON文件:
    scrapy基础知识之制作 Scrapy 爬虫 一共需要4步:
  • 原文地址:https://www.cnblogs.com/mingjian/p/5226202.html
Copyright © 2011-2022 走看看