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();
应用:过滤器登录验证
本文来自博客园,作者:Marydon,转载请注明原文链接:https://www.cnblogs.com/Marydon20170307/p/7488341.html