• servlet常用操作


    servlet常用操作

    CreateTime--2017年9月7日09:36:43

    Author:Marydon

    1.获取当前应用程序对象

    需要导入:

    import javax.servlet.ServletContext;

    实现 

    // 获取当前web应用程序
    ServletContext webApp = this.getServletContext();

    2.获取文件真实路径(磁盘路径)

    2018/11/28

    String fileName = request.getParameter("fileName");
    

      方式一:先获取项目磁盘路径(推荐使用)

    String filePath = webApp.getRealPath("");
    filePath += "/WEB-INF/uploadFiles/" + fileName;
    

      方式二:先获取项目磁盘路径

    String filePath = webApp.getRealPath("/");
    filePath += "WEB-INF/uploadFiles/" + fileName;
    

      两者的区别在于:

      调用getRealPath()方法时,如果声明入参为空"",拼接路径时必须再手动添加一个"/",否则路径不对;

      调用getRealPath()方法时,如果声明了参数"/",拼接路径时就不需要再手动添加"/"(就算添了也不影响);

      经测试发现,就算多加了一个"/",也没有影响,所以为了方便记忆,不管使用哪种方式,可以都手动加一个"/"。

      方式三:先指定文件相对于项目的相对路径

    String filePath = "WEB-INF/uploadFiles/" + fileName;
    // 获取指定文件真实路径
    filePath = webApp.getRealPath(filePath);// .../WEB-INF/uploadFiles/fileName   

      这种方式调用getRealPath()方法时,同样不需要手动添加"/"(就算添了也不影响)。

    3.根据文件类型获取返回内容类型(设置文件MIME类型)

    方法一:(推荐使用)

    String contentType = webApp.getMimeType(fileName);

    方法二:关于文件类型对应的mime类型,可以在Tomcat/conf/web.xml中549行左右的类型说明中找到!

    4.设置响应内容类型

    UpdateTime--2017年11月9日11:26:16

    response.setContentType(contentType + ";charset=UTF-8");
    // 或者
    response.setHeader("Content-Type", contentType + ";charset=UTF-8");

    作用:response.setContentType(MIME)的作用是让服务器告诉浏览器它发送的数据属于什么文件类型,使客户端浏览器,区分不同种类的数据,并根据不同的MIME调用浏览器内不同的程序嵌入模块来处理相应的数据。

    例如:当Content-Type 的值设置为text/html和text/plain时,前者会让浏览器把接收到的实体内容以HTML格式解析,后者会让浏览器以普通文本解析。

    UpdateTime--2017年10月25日15:07:20

    5.设置请求参数编码

    request.setCharacterEncoding("UTF-8");

    6.设置响应数据字符集

    response.setCharacterEncoding("UTF-8");

    7.设置Content-Disposition(指定下载该文件时的文件名)

    response.setHeader("Content-Disposition", "attachment;filename=" + formatFileName);

    8.返回客户端数据

    UpdateTime--2017年10月30日10:57:52

    response.getWriter().print("String字符串");

    注意:使用print(strParam)方法返回的数据只能是字符串格式 

    9.获取前台传参

      9.1 根据name获取对应的参数值(一个name对应一个value)  

    String paramValue = request.getParameter("paramName");

      9.2 获取前台提交的所有参数名称

    Enumeration paramters = request.getParameterNames();

      9.3 根据name获取对应的参数值(一个name对应多个value)

      需要导入:

    import java.util.Enumeration;
    import java.util.HashMap;
    import java.util.Map;
    import javax.servlet.http.HttpServletRequest;

      方法封装:

    /**
     * 获取前台提交的参数,并封装到Map中
     * @description 将参数和参数值以key-value的形式存储到Map中
     * @return Map
     */
    public static Map getParameterMap(HttpServletRequest request) {
        Map parametersMap = new HashMap();
        Enumeration paramters = request.getParameterNames();
        while (paramters.hasMoreElements()) {
            String name = (String) paramters.nextElement();
            String[] values = request.getParameterValues(name);
            String value = "";
            if (values != null) {
                for (int i = 0; i < values.length; i++) {
                    value += values[i] + ',';
                }
                value = value.substring(0, value.length() - 1);
                // value=value.replaceAll(".*([';]+|(--)+).*", " ");
            }
            parametersMap.put(name, value.trim());
        }
        return parametersMap;
    }

      举例:

    Enumeration paramters = request.getParameterNames();
    while (paramters.hasMoreElements()) {
        String name = (String) paramters.nextElement();
        String[] values = request.getParameterValues(name);
        String value = "";
        if (values != null) {
            for (int i = 0; i < values.length; i++) {
                value += values[i] + ',';
            }
            value = value.substring(0, value.length() - 1);
        }
        System.out.println("param:" + name + ",value:" + value);
    }

    UpdateTime--2017年11月14日11:50:29 

    10.获取请求路径 

    String currentURL = request.getRequestURI(); 

    应用:过滤器登录验证

  • 相关阅读:
    逻辑代码题:五个学生参加计算机比赛
    逻辑代码题:如果昨天是明天,那今天就是周五了
    面试题:二叉树的遍历
    面试题:判断链表是否存在环
    面试题:将字符串中的中英文分开显示
    N皇后
    2017<java技术>预备作业2计科陈刚
    transition+transform合并效果案例
    transition CSS3动画属性之过渡
    Less 编译的几种方式
  • 原文地址:https://www.cnblogs.com/Marydon20170307/p/7488341.html
Copyright © 2020-2023  润新知