Browse Source

jfinal 3.6

James 7 years ago
parent
commit
800394584f

+ 8 - 13
src/main/java/com/jfinal/render/ErrorRender.java

@@ -17,7 +17,6 @@
 package com.jfinal.render;
 
 import java.io.IOException;
-import java.io.PrintWriter;
 import com.jfinal.core.Const;
 
 /**
@@ -29,12 +28,12 @@ public class ErrorRender extends Render {
 	
 	protected static final String version = "<center><a href='https://gitee.com/jfinal/jfinal' target='_blank'><b>Powered by JFinal " + Const.JFINAL_VERSION + "</b></a></center>";
 	
-	protected static final String html404 = "<html><head><title>404 Not Found</title></head><body bgcolor='white'><center><h1>404 Not Found</h1></center><hr>" + version + "</body></html>";
-	protected static final String html500 = "<html><head><title>500 Internal Server Error</title></head><body bgcolor='white'><center><h1>500 Internal Server Error</h1></center><hr>" + version + "</body></html>";
+	protected static final byte[] html404 = ("<html><head><title>404 Not Found</title></head><body bgcolor='white'><center><h1>404 Not Found</h1></center><hr>" + version + "</body></html>").getBytes();
+	protected static final byte[] html500 = ("<html><head><title>500 Internal Server Error</title></head><body bgcolor='white'><center><h1>500 Internal Server Error</h1></center><hr>" + version + "</body></html>").getBytes();
 	
-	protected static final String html400 = "<html><head><title>400 Bad Request</title></head><body bgcolor='white'><center><h1>400 Bad Request</h1></center><hr>" + version + "</body></html>";
-	protected static final String html401 = "<html><head><title>401 Unauthorized</title></head><body bgcolor='white'><center><h1>401 Unauthorized</h1></center><hr>" + version + "</body></html>";
-	protected static final String html403 = "<html><head><title>403 Forbidden</title></head><body bgcolor='white'><center><h1>403 Forbidden</h1></center><hr>" + version + "</body></html>";
+	protected static final byte[] html400 = ("<html><head><title>400 Bad Request</title></head><body bgcolor='white'><center><h1>400 Bad Request</h1></center><hr>" + version + "</body></html>").getBytes();
+	protected static final byte[] html401 = ("<html><head><title>401 Unauthorized</title></head><body bgcolor='white'><center><h1>401 Unauthorized</h1></center><hr>" + version + "</body></html>").getBytes();
+	protected static final byte[] html403 = ("<html><head><title>403 Forbidden</title></head><body bgcolor='white'><center><h1>403 Forbidden</h1></center><hr>" + version + "</body></html>").getBytes();
 	
 	protected int errorCode;
 	
@@ -53,19 +52,15 @@ public class ErrorRender extends Render {
 			return;
 		}
 		
-		// render with html content
-		PrintWriter writer = null;
 		try {
 			response.setContentType(contentType);
-	        writer = response.getWriter();
-	        writer.write(getErrorHtml());
-	        writer.flush();
+			response.getOutputStream().write(getErrorHtml());
 		} catch (IOException e) {
 			throw new RenderException(e);
 		}
 	}
 	
-	public String getErrorHtml() {
+	public byte[] getErrorHtml() {
 		int errorCode = getErrorCode();
 		if (errorCode == 404)
 			return html404;
@@ -77,7 +72,7 @@ public class ErrorRender extends Render {
 			return html401;
 		if (errorCode == 403)
 			return html403;
-		return "<html><head><title>" + errorCode + " Error</title></head><body bgcolor='white'><center><h1>" + errorCode + " Error</h1></center><hr>" + version + "</body></html>";
+		return ("<html><head><title>" + errorCode + " Error</title></head><body bgcolor='white'><center><h1>" + errorCode + " Error</h1></center><hr>" + version + "</body></html>").getBytes();
 	}
 	
 	public int getErrorCode() {

+ 70 - 70
src/main/java/com/jfinal/render/FileRender.java

@@ -96,21 +96,21 @@ public class FileRender extends Render {
 		if (file == null || !file.isFile()) {
 			RenderManager.me().getRenderFactory().getErrorRender(404).setContext(request, response).render();
 			return ;
-        }
+		}
 		
 		// ---------
 		response.setHeader("Accept-Ranges", "bytes");
 		String fn = downloadFileName == null ? file.getName() : downloadFileName;
 		response.setHeader("Content-disposition", "attachment; " + encodeFileName(request, fn));
-        String contentType = servletContext.getMimeType(file.getName());
-        response.setContentType(contentType != null ? contentType : DEFAULT_CONTENT_TYPE);
-        
-        // ---------
-        if (StrKit.isBlank(request.getHeader("Range"))) {
-        	normalRender();
-        } else {
-        	rangeRender();
-        }
+		String contentType = servletContext.getMimeType(file.getName());
+		response.setContentType(contentType != null ? contentType : DEFAULT_CONTENT_TYPE);
+		
+		// ---------
+		if (StrKit.isBlank(request.getHeader("Range"))) {
+			normalRender();
+		} else {
+			rangeRender();
+		}
 	}
 	
 	protected String encodeFileName(String fileName) {
@@ -164,28 +164,28 @@ public class FileRender extends Render {
 	protected void normalRender() {
 		response.setHeader("Content-Length", String.valueOf(file.length()));
 		InputStream inputStream = null;
-        OutputStream outputStream = null;
-        try {
-            inputStream = new BufferedInputStream(new FileInputStream(file));
-            outputStream = response.getOutputStream();
-            byte[] buffer = new byte[1024];
-            for (int len = -1; (len = inputStream.read(buffer)) != -1;) {
-                outputStream.write(buffer, 0, len);
-            }
-            outputStream.flush();
-            outputStream.close();
-        } catch (IOException e) {	// ClientAbortException、EofException 直接或间接继承自 IOException
-        	String name = e.getClass().getSimpleName();
-        	if (name.equals("ClientAbortException") || name.equals("EofException")) {
-        	} else {
-        		throw new RenderException(e);
-        	}
-        } catch (Exception e) {
-        	throw new RenderException(e);
-        } finally {
-            if (inputStream != null)
-                try {inputStream.close();} catch (IOException e) {LogKit.error(e.getMessage(), e);}
-        }
+		OutputStream outputStream = null;
+		try {
+			inputStream = new BufferedInputStream(new FileInputStream(file));
+			outputStream = response.getOutputStream();
+			byte[] buffer = new byte[1024];
+			for (int len = -1; (len = inputStream.read(buffer)) != -1;) {
+				outputStream.write(buffer, 0, len);
+			}
+			outputStream.flush();
+			outputStream.close();
+		} catch (IOException e) {	// ClientAbortException、EofException 直接或间接继承自 IOException
+			String name = e.getClass().getSimpleName();
+			if (name.equals("ClientAbortException") || name.equals("EofException")) {
+			} else {
+				throw new RenderException(e);
+			}
+		} catch (Exception e) {
+			throw new RenderException(e);
+		} finally {
+			if (inputStream != null)
+				try {inputStream.close();} catch (IOException e) {LogKit.error(e.getMessage(), e);}
+		}
 	}
 	
 	protected void rangeRender() {
@@ -202,44 +202,44 @@ public class FileRender extends Render {
 		
 		InputStream inputStream = null;
 		OutputStream outputStream = null;
-        try {
-        	long start = range[0];
-        	long end = range[1];
-            inputStream = new BufferedInputStream(new FileInputStream(file));
-            if (inputStream.skip(start) != start)
-                	throw new RuntimeException("File skip error");
-            outputStream = response.getOutputStream();
-            byte[] buffer = new byte[1024];
-            long position = start;
-            for (int len; position <= end && (len = inputStream.read(buffer)) != -1;) {
-            	if (position + len <= end) {
-            		outputStream.write(buffer, 0, len);
-            		position += len;
-            	}
-            	else {
-            		for (int i=0; i<len && position <= end; i++) {
-            			outputStream.write(buffer[i]);
-                    	position++;
-            		}
-            	}
-            }
-            outputStream.flush();
-            outputStream.close();
-        }
-        catch (IOException e) {	// ClientAbortException、EofException 直接或间接继承自 IOException
-        	String name = e.getClass().getSimpleName();
-        	if (name.equals("ClientAbortException") || name.equals("EofException")) {
-        	} else {
-        		throw new RenderException(e);
-        	}
-        }
-        catch (Exception e) {
-        	throw new RenderException(e);
-        }
-        finally {
-            if (inputStream != null)
-                try {inputStream.close();} catch (IOException e) {LogKit.error(e.getMessage(), e);}
-        }
+		try {
+			long start = range[0];
+			long end = range[1];
+			inputStream = new BufferedInputStream(new FileInputStream(file));
+			if (inputStream.skip(start) != start)
+					throw new RuntimeException("File skip error");
+			outputStream = response.getOutputStream();
+			byte[] buffer = new byte[1024];
+			long position = start;
+			for (int len; position <= end && (len = inputStream.read(buffer)) != -1;) {
+				if (position + len <= end) {
+					outputStream.write(buffer, 0, len);
+					position += len;
+				}
+				else {
+					for (int i=0; i<len && position <= end; i++) {
+						outputStream.write(buffer[i]);
+						position++;
+					}
+				}
+			}
+			outputStream.flush();
+			outputStream.close();
+		}
+		catch (IOException e) {	// ClientAbortException、EofException 直接或间接继承自 IOException
+			String name = e.getClass().getSimpleName();
+			if (name.equals("ClientAbortException") || name.equals("EofException")) {
+			} else {
+				throw new RenderException(e);
+			}
+		}
+		catch (Exception e) {
+			throw new RenderException(e);
+		}
+		finally {
+			if (inputStream != null)
+				try {inputStream.close();} catch (IOException e) {LogKit.error(e.getMessage(), e);}
+		}
 	}
 	
 	/**

+ 1 - 2
src/main/java/com/jfinal/render/FreeMarkerRender.java

@@ -152,11 +152,10 @@ public class FreeMarkerRender extends Render {
 		}
 		
 		PrintWriter writer = null;
-        try {
+		try {
 			Template template = config.getTemplate(view);
 			writer = response.getWriter();
 			template.process(data, writer);		// Merge the data-model and the template
-			writer.flush();
 		} catch (Exception e) {
 			throw new RenderException(e);
 		}

+ 2 - 2
src/main/java/com/jfinal/render/JsonRender.java

@@ -138,8 +138,8 @@ public class JsonRender extends Render {
 			
 			response.setContentType(forIE ? contentTypeForIE : contentType);
 			writer = response.getWriter();
-	        writer.write(jsonText);
-	        writer.flush();
+			writer.write(jsonText);
+			// writer.flush();
 		} catch (IOException e) {
 			throw new RenderException(e);
 		}

+ 4 - 4
src/main/java/com/jfinal/render/QrCodeRender.java

@@ -107,10 +107,10 @@ public class QrCodeRender extends Render {
 			MatrixToImageWriter.writeToStream(bitMatrix, "png", response.getOutputStream());    // format: "jpg"、"png"
 		} catch (IOException e) {	// ClientAbortException、EofException 直接或间接继承自 IOException
 			String name = e.getClass().getSimpleName();
-        	if ("ClientAbortException".equals(name) || "EofException".equals(name)) {
-        	} else {
-        		throw new RenderException(e);
-        	}
+			if ("ClientAbortException".equals(name) || "EofException".equals(name)) {
+			} else {
+				throw new RenderException(e);
+			}
 		} catch (Exception e) {
 			throw new RenderException(e);
 		}

+ 1 - 1
src/main/java/com/jfinal/render/TemplateRender.java

@@ -49,7 +49,7 @@ public class TemplateRender extends Render {
 	
 	public void render() {
 		response.setContentType(getContentType());
-        
+		
 		Map<Object, Object> data = new HashMap<Object, Object>();
 		for (Enumeration<String> attrs=request.getAttributeNames(); attrs.hasMoreElements();) {
 			String attrName = attrs.nextElement();

+ 1 - 1
src/main/java/com/jfinal/render/TextRender.java

@@ -57,7 +57,7 @@ public class TextRender extends Render {
 			
 			writer = response.getWriter();
 			writer.write(text);
-			writer.flush();
+			// writer.flush();
 		} catch (IOException e) {
 			throw new RenderException(e);
 		}

+ 1 - 1
src/main/java/com/jfinal/render/VelocityRender.java

@@ -128,7 +128,7 @@ public class VelocityRender extends Render {
            writer = response.getWriter();	// BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
             
            template.merge(context, writer);
-           writer.flush();	// flush and cleanup
+           // writer.flush();	// flush and cleanup
         }
         catch(ResourceNotFoundException e) {
         	throw new RenderException("Example : error : cannot find template " + view, e);