⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dispatchertest.java

📁 jetty SERVER連接資料庫用的軟體
💻 JAVA
字号:
//========================================================================//Copyright 2004-2008 Mort Bay Consulting Pty. Ltd.//------------------------------------------------------------------------//Licensed under the Apache License, Version 2.0 (the "License");//you may not use this file except in compliance with the License.//You may obtain a copy of the License at //http://www.apache.org/licenses/LICENSE-2.0//Unless required by applicable law or agreed to in writing, software//distributed under the License is distributed on an "AS IS" BASIS,//WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.//See the License for the specific language governing permissions and//limitations under the License.//========================================================================package org.mortbay.jetty.servlet;import java.io.IOException;import java.util.Arrays;import java.util.Collections;import java.util.List;import javax.servlet.RequestDispatcher;import javax.servlet.Servlet;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import junit.framework.TestCase;import org.mortbay.jetty.LocalConnector;import org.mortbay.jetty.Server;public class DispatcherTest extends TestCase{    private Server _server = new Server();    private LocalConnector _connector;    private Context _context;    protected void setUp() throws Exception    {        _server = new Server();        _server.setSendServerVersion(false);        _connector = new LocalConnector();        _context = new Context();        _context.setContextPath("/context");        _server.addHandler(_context);        _server.addConnector( _connector );        _server.start();    }    public void testForward() throws Exception    {        _context.addServlet(ForwardServlet.class, "/ForwardServlet/*");        _context.addServlet(AssertForwardServlet.class, "/AssertForwardServlet/*");        String expected=            "HTTP/1.1 200 OK\r\n"+            "Content-Type: text/html\r\n"+            "Content-Length: 0\r\n"+            "\r\n";        String responses = _connector.getResponses("GET /context/ForwardServlet?do=assertforward&do=more&test=1 HTTP/1.1\n" + "Host: localhost\n\n");                assertEquals(expected, responses);            }        public void testInclude() throws Exception    {        _context.addServlet(IncludeServlet.class, "/IncludeServlet/*");        _context.addServlet(AssertIncludeServlet.class, "/AssertIncludeServlet/*");        String expected=            "HTTP/1.1 200 OK\r\n"+            "Content-Length: 0\r\n"+            "\r\n";        String responses = _connector.getResponses("GET /context/IncludeServlet?do=assertinclude&do=more&test=1 HTTP/1.1\n" + "Host: localhost\n\n");                assertEquals(expected, responses);             }        public void testForwardThenInclude() throws Exception    {        _context.addServlet(ForwardServlet.class, "/ForwardServlet/*");        _context.addServlet(IncludeServlet.class, "/IncludeServlet/*");        _context.addServlet(AssertForwardIncludeServlet.class, "/AssertForwardIncludeServlet/*");        String expected=            "HTTP/1.1 200 OK\r\n"+            "Content-Length: 0\r\n"+            "\r\n";        String responses = _connector.getResponses("GET /context/ForwardServlet/forwardpath?do=include HTTP/1.1\n" + "Host: localhost\n\n");                assertEquals(expected, responses);    }        public void testIncludeThenForward() throws Exception    {        _context.addServlet(IncludeServlet.class, "/IncludeServlet/*");        _context.addServlet(ForwardServlet.class, "/ForwardServlet/*");        _context.addServlet(AssertIncludeForwardServlet.class, "/AssertIncludeForwardServlet/*");                String expected=            "HTTP/1.1 200 OK\r\n"+            "Transfer-Encoding: chunked\r\n"+            "\r\n"+            "0\r\n"+            "\r\n";        String responses = _connector.getResponses("GET /context/IncludeServlet/includepath?do=forward HTTP/1.1\n" + "Host: localhost\n\n");                assertEquals(expected, responses);    }        public static class ForwardServlet extends HttpServlet implements Servlet     {        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException         {            RequestDispatcher dispatcher = null;                    if(request.getParameter("do").equals("include"))                dispatcher = getServletContext().getRequestDispatcher("/IncludeServlet/includepath?do=assertforwardinclude");            else if(request.getParameter("do").equals("assertincludeforward"))                dispatcher = getServletContext().getRequestDispatcher("/AssertIncludeForwardServlet/assertpath?do=end");            else if(request.getParameter("do").equals("assertforward"))                dispatcher = getServletContext().getRequestDispatcher("/AssertForwardServlet?do=end&do=the");            dispatcher.forward(request, response);        }           }        public static class IncludeServlet extends HttpServlet implements Servlet     {        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException         {            RequestDispatcher dispatcher = null;                    if(request.getParameter("do").equals("forward"))                dispatcher = getServletContext().getRequestDispatcher("/ForwardServlet/forwardpath?do=assertincludeforward");            else if(request.getParameter("do").equals("assertforwardinclude"))                dispatcher = getServletContext().getRequestDispatcher("/AssertForwardIncludeServlet/assertpath?do=end");            else if(request.getParameter("do").equals("assertinclude"))                dispatcher = getServletContext().getRequestDispatcher("/AssertIncludeServlet?do=end&do=the");            dispatcher.include(request, response);        }           }    public static class AssertForwardServlet extends HttpServlet implements Servlet    {        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException        {            assertEquals( Boolean.TRUE, (Boolean)request.getAttribute(Dispatcher.__FORWARD_JETTY) );            assertEquals( "/context/ForwardServlet", request.getAttribute(Dispatcher.__FORWARD_REQUEST_URI));            assertEquals( "/context", request.getAttribute(Dispatcher.__FORWARD_CONTEXT_PATH) );            assertEquals( "/ForwardServlet", request.getAttribute(Dispatcher.__FORWARD_SERVLET_PATH));            assertEquals( null, request.getAttribute(Dispatcher.__FORWARD_PATH_INFO));            assertEquals( "do=assertforward&do=more&test=1", request.getAttribute(Dispatcher.__FORWARD_QUERY_STRING) );                        List expectedAttributeNames = Arrays.asList(new String[] {                Dispatcher.__FORWARD_REQUEST_URI, Dispatcher.__FORWARD_CONTEXT_PATH,                 Dispatcher.__FORWARD_SERVLET_PATH, Dispatcher.__FORWARD_QUERY_STRING            });            List requestAttributeNames = Collections.list(request.getAttributeNames());            assertTrue(requestAttributeNames.containsAll(expectedAttributeNames));                                    assertEquals(null, request.getPathInfo());            assertEquals(null, request.getPathTranslated());            assertEquals("do=end&do=the&test=1", request.getQueryString());            assertEquals("/context/AssertForwardServlet", request.getRequestURI());            assertEquals("/context", request.getContextPath());            assertEquals("/AssertForwardServlet", request.getServletPath());                        response.setContentType("text/html");            response.setStatus(HttpServletResponse.SC_OK);        }    }    public static class AssertIncludeServlet extends HttpServlet implements Servlet     {        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException        {            assertEquals( Boolean.TRUE, (Boolean)request.getAttribute(Dispatcher.__INCLUDE_JETTY) );            assertEquals( "/context/AssertIncludeServlet", request.getAttribute(Dispatcher.__INCLUDE_REQUEST_URI));            assertEquals( "/context", request.getAttribute(Dispatcher.__INCLUDE_CONTEXT_PATH) );            assertEquals( "/AssertIncludeServlet", request.getAttribute(Dispatcher.__INCLUDE_SERVLET_PATH));            assertEquals( null, request.getAttribute(Dispatcher.__INCLUDE_PATH_INFO));            assertEquals( "do=end&do=the", request.getAttribute(Dispatcher.__INCLUDE_QUERY_STRING));                            List expectedAttributeNames = Arrays.asList(new String[] {                Dispatcher.__INCLUDE_REQUEST_URI, Dispatcher.__INCLUDE_CONTEXT_PATH,                 Dispatcher.__INCLUDE_SERVLET_PATH, Dispatcher.__INCLUDE_QUERY_STRING            });            List requestAttributeNames = Collections.list(request.getAttributeNames());            assertTrue(requestAttributeNames.containsAll(expectedAttributeNames));                                    assertEquals(null, request.getPathInfo());            assertEquals(null, request.getPathTranslated());            assertEquals("do=assertinclude&do=more&test=1", request.getQueryString());            assertEquals("/context/IncludeServlet", request.getRequestURI());            assertEquals("/context", request.getContextPath());            assertEquals("/IncludeServlet", request.getServletPath());                        response.setContentType("text/html");            response.setStatus(HttpServletResponse.SC_OK);                    }    }            public static class AssertForwardIncludeServlet extends HttpServlet implements Servlet     {        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException         {            // include doesn't hide forward            assertEquals( Boolean.TRUE, (Boolean)request.getAttribute(Dispatcher.__FORWARD_JETTY) );            assertEquals( "/context/ForwardServlet/forwardpath", request.getAttribute(Dispatcher.__FORWARD_REQUEST_URI));            assertEquals( "/context", request.getAttribute(Dispatcher.__FORWARD_CONTEXT_PATH) );            assertEquals( "/ForwardServlet", request.getAttribute(Dispatcher.__FORWARD_SERVLET_PATH));            assertEquals( "/forwardpath", request.getAttribute(Dispatcher.__FORWARD_PATH_INFO));            assertEquals( "do=include", request.getAttribute(Dispatcher.__FORWARD_QUERY_STRING) );                        assertEquals( Boolean.TRUE, (Boolean)request.getAttribute(Dispatcher.__INCLUDE_JETTY) );            assertEquals( "/context/AssertForwardIncludeServlet/assertpath", request.getAttribute(Dispatcher.__INCLUDE_REQUEST_URI));            assertEquals( "/context", request.getAttribute(Dispatcher.__INCLUDE_CONTEXT_PATH) );            assertEquals( "/AssertForwardIncludeServlet", request.getAttribute(Dispatcher.__INCLUDE_SERVLET_PATH));            assertEquals( "/assertpath", request.getAttribute(Dispatcher.__INCLUDE_PATH_INFO));            assertEquals( "do=end", request.getAttribute(Dispatcher.__INCLUDE_QUERY_STRING));                                        List expectedAttributeNames = Arrays.asList(new String[] {                Dispatcher.__FORWARD_REQUEST_URI, Dispatcher.__FORWARD_CONTEXT_PATH, Dispatcher.__FORWARD_SERVLET_PATH,                 Dispatcher.__FORWARD_PATH_INFO, Dispatcher.__FORWARD_QUERY_STRING,                Dispatcher.__INCLUDE_REQUEST_URI, Dispatcher.__INCLUDE_CONTEXT_PATH, Dispatcher.__INCLUDE_SERVLET_PATH,                 Dispatcher.__INCLUDE_PATH_INFO, Dispatcher.__INCLUDE_QUERY_STRING            });            List requestAttributeNames = Collections.list(request.getAttributeNames());            assertTrue(requestAttributeNames.containsAll(expectedAttributeNames));                                                assertEquals("/includepath", request.getPathInfo());            assertEquals(null, request.getPathTranslated());            assertEquals("do=assertforwardinclude", request.getQueryString());            assertEquals("/context/IncludeServlet/includepath", request.getRequestURI());            assertEquals("/context", request.getContextPath());            assertEquals("/IncludeServlet", request.getServletPath());                        response.setContentType("text/html");            response.setStatus(HttpServletResponse.SC_OK);        }            }        public static class AssertIncludeForwardServlet extends HttpServlet implements Servlet    {        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException         {            // forward hides include            assertEquals( null, request.getAttribute(Dispatcher.__INCLUDE_JETTY) );            assertEquals( null, request.getAttribute(Dispatcher.__INCLUDE_REQUEST_URI));            assertEquals( null, request.getAttribute(Dispatcher.__INCLUDE_CONTEXT_PATH) );            assertEquals( null, request.getAttribute(Dispatcher.__INCLUDE_SERVLET_PATH));            assertEquals( null, request.getAttribute(Dispatcher.__INCLUDE_PATH_INFO));            assertEquals( null, request.getAttribute(Dispatcher.__INCLUDE_QUERY_STRING));                assertEquals( Boolean.TRUE, (Boolean)request.getAttribute(Dispatcher.__FORWARD_JETTY) );            assertEquals( "/context/IncludeServlet/includepath", request.getAttribute(Dispatcher.__FORWARD_REQUEST_URI));            assertEquals( "/context", request.getAttribute(Dispatcher.__FORWARD_CONTEXT_PATH) );            assertEquals( "/IncludeServlet", request.getAttribute(Dispatcher.__FORWARD_SERVLET_PATH));            assertEquals( "/includepath", request.getAttribute(Dispatcher.__FORWARD_PATH_INFO));            assertEquals( "do=forward", request.getAttribute(Dispatcher.__FORWARD_QUERY_STRING) );                                    List expectedAttributeNames = Arrays.asList(new String[] {                Dispatcher.__FORWARD_REQUEST_URI, Dispatcher.__FORWARD_CONTEXT_PATH, Dispatcher.__FORWARD_SERVLET_PATH,                 Dispatcher.__FORWARD_PATH_INFO, Dispatcher.__FORWARD_QUERY_STRING,            });            List requestAttributeNames = Collections.list(request.getAttributeNames());            assertTrue(requestAttributeNames.containsAll(expectedAttributeNames));                                    assertEquals("/assertpath", request.getPathInfo());            assertEquals(null, request.getPathTranslated());             assertEquals("do=end", request.getQueryString());            assertEquals("/context/AssertIncludeForwardServlet/assertpath", request.getRequestURI());            assertEquals("/context", request.getContextPath());            assertEquals("/AssertIncludeForwardServlet", request.getServletPath());            response.setContentType("text/html");            response.setStatus(HttpServletResponse.SC_OK);        }                   }    }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -