网站框架功能要点

简单的总结了一下,用任何网站框架开发需要实现的功能列表

  • HTTP请求相应:GET、HEAD、POST、PUT、DELETE、OPTIONS等
  • 上传、下载文件
  • 重定向
  • 会话
  • Cookies
  • 错误处理(返回404之类的错误信息)
  • 日志
  • 可选:
    • 消息闪现(Flask框架中的功能)

发布者

陈 俞飞

一直尝试于各个层面功能的开发,语言不限,平台不限。极端情况下,限制你的只有你思维。你的心有多大,你的世界就有多大。我确信它可以容的下整个世界。

《网站框架功能要点》上有2条评论

  1. 错误处理:
    1. session超时,登陆认证失效。(通常仅含出错提示信息)
    2. 404
    3. 出错,(通常包含调试信息)。
    登陆(支持记住用户名、密码)

  2. 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)
    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.

    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.
    log4j.appender.A2.layout=org.apache.log4j.PatternLayout
    log4j.appender.A2.layout.ConversionPattern=%5r %-5p [%t] %c{2} – %m%n
    二、web.xml添加内容:

    log4jConfigLocation classpath:log4j.properties


    log4jRefreshInterval 1800000

    org.springframework.web.util.Log4jConfigListener

    三、类里面定义变量
    private static Logger logger = Logger.getLogger(LoginController.class);

评论已关闭。