@RequestMapping(value = “/download.do”, method = RequestMethod.GET)
public ResponseEntity handleRequest(ModelMap model) throws IOException {
File file=new File(DOWNLOAD_FILE_PATH);
HttpHeaders headers = new HttpHeaders();
String fileName=new String(“aopalliance-1.0.jar”.getBytes(“UTF-8”), “iso-8859-1”); //为了解决中文名称乱码问题
headers.setContentDispositionFormData(“attachment”, fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity(FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED);
}
5. 浏览器直接打开文件
private static final String SHOWPDF_FILE_PATH = “E:\\spring\\download_root\\HTML5 in Action.pdf”;
@RequestMapping(value = “/showpdf.do”, method = RequestMethod.GET)
public ResponseEntity pdfDownload(HttpServletRequest httpServletRequest) throws IOException
{
String filename = SHOWPDF_FILE_PATH;
byte[] pdf1Bytes = FileUtils.readFileToByteArray(new File(SHOWPDF_FILE_PATH));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType(“application/pdf”));
headers.add(“content-disposition”, “inline;filename=” + “HTML5 in Action.pdf”); // 另存为的时候,用的名字
ResponseEntity response = new ResponseEntity(pdf1Bytes, headers, HttpStatus.OK);
return response;
}
6. 日志
一、添加log4j.properties到src目录,内容为:
# Attach appender A1 to root. Set root level to Level.DEBUG.
log4j.rootLogger=DEBUG, A1, A2
# A1 is set to be a FileAppender sending its output to
# System.out. However, only error messages and above will be printed
# in A1 because A1’s threshold is set to Level.ERROR.
# The fact that the root level is set to Prority.DEBUG only influences
# log requests made to the root logger. It has no influence on the
# *appenders* attached to root.
# Set the level of the logger named “org.apache.log4j.examples” to
# Level.INFO, attach appender A2.
log4j.logger.org.apache.log4j.examples=INFO, A2
# Appender A2 writes to the file “test” in user’s home.
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=${webapp.root}/logs/log.log
# Truncate ‘test’ if it aleady exists.
log4j.appender.A2.Append=false
错误处理:
1. session超时,登陆认证失效。(通常仅含出错提示信息)
2. 404
3. 出错,(通常包含调试信息)。
登陆(支持记住用户名、密码)
spring 代码示例:
1. 登录、登出Session操作
package com.fred.hello.util;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@Component(“sessionHelper”)
public class SessionHelper {
private static final String IS_LOGIN = “HELLO_IS_LOGIN”;
@Autowired
private HttpServletRequest request;
public void login() {
HttpSession s = request.getSession();
s.setAttribute(IS_LOGIN, “true”);
}
public static boolean isLogin(HttpServletRequest request) {
HttpSession s = request.getSession();
String isLogin = (String)s.getAttribute(IS_LOGIN);
return “true”.equals(isLogin);
}
public void logout() {
HttpSession s = request.getSession();
s.removeAttribute(IS_LOGIN);
}
}
2. 登录
@RequestMapping(value = “/login.do”, method = RequestMethod.GET)
public String login(ModelMap model) {
logger.error(“Enter login.do”);
this.sessionHelper.login();
model.addAttribute(“message”, “Login Page!”);
return “login”;
}
3. 重定向
@RequestMapping(value = “/redirect.do”)
public String handleRequest(ModelMap model) {
return “redirect:login.do”;
}
4. 下载
private static final String DOWNLOAD_FILE_PATH = “E:\\spring\\download_root\\aopalliance-1.0.jar”;
@RequestMapping(value = “/download.do”, method = RequestMethod.GET) handleRequest(ModelMap model) throws IOException { (FileUtils.readFileToByteArray(file), headers, HttpStatus.CREATED); pdfDownload(HttpServletRequest httpServletRequest) throws IOException response = new ResponseEntity (pdf1Bytes, headers, HttpStatus.OK);
public ResponseEntity
File file=new File(DOWNLOAD_FILE_PATH);
HttpHeaders headers = new HttpHeaders();
String fileName=new String(“aopalliance-1.0.jar”.getBytes(“UTF-8”), “iso-8859-1”); //为了解决中文名称乱码问题
headers.setContentDispositionFormData(“attachment”, fileName);
headers.setContentType(MediaType.APPLICATION_OCTET_STREAM);
return new ResponseEntity
}
5. 浏览器直接打开文件
private static final String SHOWPDF_FILE_PATH = “E:\\spring\\download_root\\HTML5 in Action.pdf”;
@RequestMapping(value = “/showpdf.do”, method = RequestMethod.GET)
public ResponseEntity
{
String filename = SHOWPDF_FILE_PATH;
byte[] pdf1Bytes = FileUtils.readFileToByteArray(new File(SHOWPDF_FILE_PATH));
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.parseMediaType(“application/pdf”));
headers.add(“content-disposition”, “inline;filename=” + “HTML5 in Action.pdf”); // 另存为的时候,用的名字
ResponseEntity
return response;
}
6. 日志
一、添加log4j.properties到src目录,内容为:
# Attach appender A1 to root. Set root level to Level.DEBUG.
log4j.rootLogger=DEBUG, A1, A2
# A1 is set to be a FileAppender sending its output to
# System.out. However, only error messages and above will be printed
# in A1 because A1’s threshold is set to Level.ERROR.
# The fact that the root level is set to Prority.DEBUG only influences
# log requests made to the root logger. It has no influence on the
# *appenders* attached to root.
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.Threshold=ERROR
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%p [%t] %c{2} (%M:%L) – %m%n
# Set the level of the logger named “org.apache.log4j.examples” to
# Level.INFO, attach appender A2.
log4j.logger.org.apache.log4j.examples=INFO, A2
# Appender A2 writes to the file “test” in user’s home.
log4j.appender.A2=org.apache.log4j.FileAppender
log4j.appender.A2.File=${webapp.root}/logs/log.log
# Truncate ‘test’ if it aleady exists.
log4j.appender.A2.Append=false
# Appender A2 uses the PatternLayout.
log4jConfigLocation
classpath:log4j.properties
log4jRefreshInterval
1800000
org.springframework.web.util.Log4jConfigListener
log4j.appender.A2.layout=org.apache.log4j.PatternLayout
log4j.appender.A2.layout.ConversionPattern=%5r %-5p [%t] %c{2} – %m%n
二、web.xml添加内容:
三、类里面定义变量
private static Logger logger = Logger.getLogger(LoginController.class);