request.getServletContext()的问题
2017-07-28 16:20
183 查看
这两天在做项目,需要一个获取域名的功能,实现代码如下:
结果发现一个问题,本地测试通过,上传到测试服务器后测试就报错了,报错信息如下:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext;
查了很多资料之后解决问题,在这做个记录:
ServletRequest的getServletContext方法是Servlet3.0添加的,本地用的是Tomcat9.0,版本比较高,支持request.getServletContext()这种写法,而线上是Tomcat6.0,只支持到Servlet2.5,需要先用request拿到HttpSession或者通过Servlet自身拿到ServletConfig之后再获取ServletContext,即修改后如下:
再记一笔,之前有个项目在使用request.getSession().getServletContext()时会出现一个问题,就是sessionId一直在变,去掉getSession()后正常,当时这个问题也排查了很久,先记一笔,遇到问题再测试调整。
public static String fetchDomain(HttpServletRequest request) { StringBuffer url = request.getRequestURL(); return url.delete(url.length() - request.getRequestURI().length(), url.length()).append(request.getServletContext().getContextPath()).append("/").toString(); }
结果发现一个问题,本地测试通过,上传到测试服务器后测试就报错了,报错信息如下:
java.lang.NoSuchMethodError: javax.servlet.http.HttpServletRequest.getServletContext()Ljavax/servlet/ServletContext;
查了很多资料之后解决问题,在这做个记录:
ServletRequest的getServletContext方法是Servlet3.0添加的,本地用的是Tomcat9.0,版本比较高,支持request.getServletContext()这种写法,而线上是Tomcat6.0,只支持到Servlet2.5,需要先用request拿到HttpSession或者通过Servlet自身拿到ServletConfig之后再获取ServletContext,即修改后如下:
public static String fetchDomain(HttpServletRequest request) { StringBuffer url = request.getRequestURL(); return url.delete(url.length() - request.getRequestURI().length(), url.length()).append(request.getSession().getServletContext().getContextPath()).append("/").toString(); }
再记一笔,之前有个项目在使用request.getSession().getServletContext()时会出现一个问题,就是sessionId一直在变,去掉getSession()后正常,当时这个问题也排查了很久,先记一笔,遇到问题再测试调整。
相关文章推荐
- eclipse配置外部tomcat需要注意的问题。(怎样让request.getSession().getServletContext().getRealPath("/")得到正确的路径结果)
- request.getServletContext()的问题!
- Web开发中的域问题:PageContext,Request,Session,ServletContext(Application)
- request.getParameter和request.getAttribute的比较(附:问题一个)
- 关于在Java中使用request.getRequestDispatcher(".....")引起的css文件无效或图片无效问题。
- Servlet的Request.getInputStream()只能读取一次问题
- JSP用过滤器解决request getParameter中文乱码问题
- request.getParameter中文乱码问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题
- ajax的post请求后台request.getParameter()接收不到参数问题
- 从XMLHttpRequest请求响应里getResponseHeader(header)报错:Refused to get unsafe header "**" 问题解决
- java get request 中文乱码问题
- 搞定request.getRemoteAddr()获取的值为0:0:0:0:0:0:0:1问题
- request.getParameter中文乱码问题解决办法
- request.getParameter()获取不到数据的问题
- 关于servletContext.getRealPath()空指针的问题
- struts中enctype="multipart/form-data",request.getParameter("file") 是null的问题分
- request.getRequestDispatcher("").forward()中文乱码问题
- 解决apache/nginx做反向代理导致request.getServerName()外网环境获取不到代理地址(或域名)的问题