📄 statelesstest.java
字号:
public void testStreamBasedPost() throws Exception { ServletRunner sr = new ServletRunner(); sr.registerServlet( "ReportData", BodyEcho.class.getName() ); String sourceData = "This is an interesting test\nWith two lines"; InputStream source = new ByteArrayInputStream( sourceData.getBytes( "iso-8859-1" ) ); WebClient wc = sr.newClient(); WebRequest wr = new PostMethodWebRequest( "http://localhost/ReportData", source, "text/sample" ); WebResponse response = wc.getResponse( wr ); assertEquals( "Body response", sourceData.length() + "\n" + sourceData, response.getText() ); assertEquals( "Content-type", "text/sample", response.getContentType() ); } public void testRequestInputStream() throws Exception { ServletRunner sr = new ServletRunner(); WebRequest request = new PostMethodWebRequest( "http://localhost/servlet/" + ParameterServlet.class.getName() ); request.setParameter( "color", "green" ); final String expectedBody = "color=green"; InvocationContext ic = sr.newClient().newInvocation( request ); assertEquals( "Message body type", "application/x-www-form-urlencoded", ic.getRequest().getContentType() ); InputStream is = ic.getRequest().getInputStream(); byte[] buffer = new byte[ expectedBody.length() ]; assertEquals( "Input stream length", buffer.length, is.read( buffer ) ); assertEquals( "Message body", expectedBody, new String( buffer ) ); } public void testFrameAccess() throws Exception { ServletRunner sr = new ServletRunner(); sr.registerServlet( "Frames", FrameTopServlet.class.getName() ); sr.registerServlet( "RedFrame", SimpleGetServlet.class.getName() ); sr.registerServlet( "BlueFrame", AccessCountServlet.class.getName() ); WebClient client = sr.newClient(); WebRequest request = new GetMethodWebRequest( "http://host/Frames" ); WebResponse page = client.getResponse( request ); HttpUserAgentTest.assertMatchingSet( "Frames defined for the conversation", new String[] { "_top", "red", "blue" }, client.getFrameNames() ); WebResponse response = client.getFrameContents( "red" ); assertEquals( "Frame contents", SimpleGetServlet.RESPONSE_TEXT, response.getText() ); page.getSubframeContents( page.getFrameNames()[0] ); } static class SimpleGetServlet extends HttpServlet { static String RESPONSE_TEXT = "the desired content\r\n"; protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/html" ); PrintWriter pw = resp.getWriter(); pw.print( RESPONSE_TEXT ); pw.close(); } } static class AccessCountServlet extends HttpServlet { private int _numAccesses; private static int _numInstances = 0; public void init() throws ServletException { super.init(); _numInstances++; } public void destroy() { super.destroy(); _numInstances--; } public static int getNumInstances() { return _numInstances; } protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/plain" ); PrintWriter pw = resp.getWriter(); pw.print( String.valueOf( ++_numAccesses ) ); pw.close(); } } static class ParameterServlet extends HttpServlet { static String RESPONSE_TEXT = "the desired content\r\n"; protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/plain" ); resp.addHeader( "MyHeader", "value1" ); resp.addHeader( "MyHeader", "value2" ); PrintWriter pw = resp.getWriter(); pw.print( "You selected " + req.getParameter( "color" ) ); pw.close(); } protected void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/plain" ); PrintWriter pw = resp.getWriter(); pw.print( "You posted " + req.getParameter( "color" ) ); pw.close(); } } static class BodyEcho extends HttpServlet { /** * Returns a resource object as a result of a get request. **/ protected void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { int length = req.getIntHeader( "Content-length" ); String contentType = req.getHeader( "Content-type" ); resp.setContentType( contentType ); InputStreamReader isr = new InputStreamReader( req.getInputStream() ); BufferedReader br = new BufferedReader( isr ); resp.getWriter().print( length ); String line = br.readLine(); while (line != null) { resp.getWriter().print( "\n" ); resp.getWriter().print( line ); line = br.readLine(); } resp.getWriter().flush(); resp.getWriter().close(); } } static class FormSubmissionServlet extends HttpServlet { protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/html" ); PrintWriter pw = resp.getWriter(); pw.println( "<html><head></head><body>" ); pw.println( "<FORM ACTION='/testForm?submission=act' METHOD='POST'>" ); pw.println( "<INPUT NAME='login' TYPE='TEXT'>" ); pw.println( "<INPUT NAME='password' TYPE='PASSWORD'>" ); pw.println( "<INPUT TYPE='SUBMIT'>" ); pw.println( "</FORM></body></html>" ); pw.close(); } protected void doPost( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/plain" ); PrintWriter pw = resp.getWriter(); pw.print( "You posted " + req.getParameter( "login" ) + "," + req.getParameter( "password" ) ); pw.close(); } } static class FrameTopServlet extends HttpServlet { protected void doGet( HttpServletRequest req, HttpServletResponse resp ) throws ServletException, IOException { resp.setContentType( "text/html" ); PrintWriter pw = resp.getWriter(); pw.println( "<html><head></head><frameset cols='20%,80&'>" ); pw.println( "<frame src='RedFrame' name='red'>" ); pw.println( "<frame src='BlueFrame' name='blue'>" ); pw.println( "</frameset></html>" ); pw.close(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -