首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >php elasticsearch_php get

php elasticsearch_php get

作者头像
全栈程序员站长
发布于 2022-11-04 11:52:18
发布于 2022-11-04 11:52:18
1.7K0
举报

大家好,又见面了,我是你们的朋友全栈君。

weblogic环境下getRealPath() called with

unsafe问题的处理

环境:weblogic,portal4.5

问题:访问页面的时候没有任何错误,只是在mydomain.log里面经常会发现下面的错误信息

<2007-8-29 下午05时21分06秒 CST>

=2268995,name=wzportal,context-path=/wzportal)] getRealPath()

called with unsafe

path: “.”.

weblogic.utils.io.FilenameEncoder$UnsafeFilenameException:

D:\bea\user_projects\

domains\mydomain\applications\wzportal\. ends with illegal

character

at

weblogic.utils.io.FilenameEncoder.getSafeFile(FilenameEncoder.java:21

5)

at

weblogic.servlet.internal.WebAppServletContext.getRealPath(WebAppServ

letContext.java:1009)

解决方法:修改WEB-INF\conf\NpsuiteResources.properties文件,搜索到services.UploadService.repository,在=后面加上/

[em02]是不是感觉很简单啊,下面来点让你头晕的。

分析:引用自http://www.cn-java.com/target/news.php?news_id=3515

从Weblogic控制台输出的信息来看,.

是一个不安全的路径,这个异常的产生过程是这样的:

1、 Turbine Servlet启动。

2、在org.apache.Turbine的doGet方法中有data.setScreen(data.getParameters().getString(“screen”))的代码。

3、

RunData的实例是DefaultJetspeedRunData,此类继承了org.apache.turbine.services.DefaultTurbineRunData,所以在Turbine类的doGet方法中的data.getParameters实际是调用了DefaultTurbineRunData方法,此方法返回ParameterParser类型,ParameterParser是一个接口,实际的类是org.apache.turbine.util.parser.DefaultParameterParser。在getParameters方法中有一行代码this.parameters.setRequest(this.req),异常是调用setRequest方法产生的。

4、再看DefaultParameterParser的setRequest方法,经调试,异常是从此方法中的语句TurbineUpload.getAutomatic()产生的,然后再看TurbineUpload(org.apache.turbine.services.upload.TurbineUpload),此类是一个抽象类,在getAutomatic方法中调用了upload

= getService();

5、 再看一下TurbineUpload的getService()方法:

public static UploadService getService()

{

return (UploadService)TurbineServices.getInstance().

getService(UploadService.SERVICE_NAME);

//SERVICE_NAME=UploadService

}

TurbineServices.getInstance().getService(UploadService.SERVICE_NAME)返回的类实例是org.apache.turbine.services.upload.TurbineUploadService,而TurbineServices类的getService方法实际是调用了其父类的方法,在其父类的getService方法中有service.init()的语句,实际上是调用了TurbineUploadService父类BaseUploadService的init()方法,看一下此方法内部的代码:

String path = getProperties()

.getProperty(UploadService.REPOSITORY_KEY,

UploadService.REPOSITORY_DEFAULT.toString());

//REPOSITORY_KEY=repository

//REPOSITORY_DEFAULT = “.”

if(!path.startsWith(“/”))

{

String realPath = TurbineServlet.getRealPath(path);

if(realPath != null)

{

path = realPath;

}

}

getProperties().setProperty(UploadService.REPOSITORY_KEY,

path);

setInit(true);

从以上代码分析,path的值是从TurbineResources.properties文件中读取的,从此文件中找到下面一行:

services.UploadService.repository=.

path读取的等号右面的值,从上面代码中看出,如果路径不是以”/”开头,就调用TurbineServlet.getRealPath(path)得到实际的路径,而此方法实际是调用了TurbineServletService的getRealPath,看TurbineServletService中的getRealPath,有这样一行代码:

path = getServletContext().getRealPath( uri );

uri的值是从TurbineServlet.getRealPath传递进来的,也就是从TurbineResources.properties读取services.UploadService.repository的值,目前是.

getServletContext().getRealPath(“.”)在Weblogic环境下抛出了异常,所以需要修改TurbineResources.properties,将services.UploadService.repository=.改为

services.UploadService.repository=/

,等号右面也可以写绝对路径或以”/”开头的相对路径。

上面提到的是TurbineResources.properties文件中修改services.UploadService.repository配置,portal4.5中找了半天没这个文件,还是在别人的提醒下才知道portal4.5将TurbineResources.properties文件整合在了NpsuiteResources.properties文件中。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/191836.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月19日 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
SpringMVC-07 拦截器+文件上传下载
SpringMVC的处理器拦截器类似于Servlet开发中的过滤器Filter,用于对处理器进行预处理和后处理。开发者可以自己定义一些拦截器来实现特定的功能。
张小驰出没
2021/04/15
5910
SpringMVC-07  拦截器+文件上传下载
maven 项目 springMVC实现文件图片的上传下载功能详解(源码已提供,小白必看)
文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver。
一写代码就开心
2020/11/19
2.2K1
maven 项目  springMVC实现文件图片的上传下载功能详解(源码已提供,小白必看)
J2EE之ServletContext读取资源文件
这里须要注意的是data.properties文件的位置在Myeclipse的src文件夹下,为啥getResourceAsStream方法传入的參数确实”/WEB-INF/classes/data.properties”
全栈程序员站长
2022/07/10
3140
J2EE之ServletContext读取资源文件
Servlet学习笔记
Servlet学习笔记 1.0 Servlet 概述 1.1 Servlet是运行在服务器端的Java小程序,通过HTTP协议用于接受客户端请求,并发出响应。 1.2 Servlet中的方法 public void servlet(ServletRequest req,ServletRequest res) throws ServletExcepation,java.io.IOException ServletRequest req:代表着请求对象,该对象有HTTP协议的请求部分的所有内容。它的实现类由服务器提供,封装数据也是服务器来做。 ServletRequest res:代表着响应对象,该对象中由我们写数据(HTTP协议的响应部分)进去。它的实现类也是由服务器提供的。 service: 由服务器调用,每次请求都会调用一次。服务器采用的是多线程机制。 2.0 Servlet 的编码步骤 2.1 编写一个类实现javax.servlet接口,或者继承javax.servlet.GenericServlet. 2.2 编译 set classpath=%classpath%;E:\IDE\tomcat-8.0.26\lib\servlet-api.jar javac -d . HelloServlet.java 2.3 修改web.xml 2.4 部署,把应用部署到Tomcat上,访问地址:http://localhost:8080/DemoServlet/hello 3.0 Servlet 的执行过程 4.0 Servlet 的编写方式 1、javax.servlet.GenericServlet:通用的Servlet实现,抽象类 2、javax.servlet.http.HttpServlet:与HTTP协议有关的,抽象类。 3、Servlet的核心类 5.0 Servlet 的生命周期 6.0 Servlet 的线程安全 尽量使用局部变量,避免使用实例变量。 7.0 Servlet 的一些细节 7.1 一个Servlet可以映射到多个地址上。 7.2 可以使用地址通配符* 7.2.1(优先级高) *.do 必须以*号开头 如:*.do 7.2.2(优先级高) 以/开头,必须以*结尾 如:/action/* 7.2.3 默认的Servlet,映射路径是<url-pattern>/</url-pattern>。不需要配,因为默认的Servlet负责处理用户请求找不到的处理工作。一切都是Servlet。 7.2.4 应用在启动时就完成Servlet的实例化和初始化。2为启动的顺序。 web.xml <load-on-startup>2</load-on-startup> 8.0 ServletConfig:Servlet的参数配置 8.1 ServletConfig:代表看针对当前Servlet的参数配置。 在Servlet的配置文件中,可以使用一个或多个<init-param>标签为servlet配置一些初始化参数。 8.2 如何得到ServletConfig对象的应用:在初始化Servlet,由容器产生,并传递给你 9.0 ServletContext 9.1 ServletContext代表着当前应用。每个应用只有一个ServletContext对象的实例,由容器提供。 9.2 如何获取ServletContext的实例:ServletConfig.getServletContext(); 9.3 ServletContext的生命周期:诞生,应用被加载时就由容器被创建好。活着,应用不挂就一直活着。死亡,应用挂了就挂了。 9.4 域(存活范围)对象:ServletContext称为应用范围域对象。 ServletContext{ private Map<String,Object>map = new HashMap<String,Object>(); public void setAttribute(String key,Object value){ map.put(key,value); } public void removeAttribut
王小雷
2019/05/26
4700
java getrealpath_关于getRealPath[通俗易懂]
String filename = request.getRealPath(filename) //出了错——————-
全栈程序员站长
2022/11/05
5900
SpringMvc实现文件上传与下载
表单部分代码我就不贴 了,只要注意下表单的enctype="multipart/form-data"这个属性必须加上,表明以二进制的数据格式来传输数据
kl博主
2023/11/17
2180
什么年代了,你还不知道 Servlet3.0 中的文件上传方式?
松哥原创的 Spring Boot 视频教程已经杀青,感兴趣的小伙伴戳这里-->Spring Boot+Vue+微人事视频教程
江南一点雨
2021/04/22
1.4K0
Struts2笔记
c、在应用的构建路径的顶端(WEB-INF\classes),建立struts2的配置文件。默认文件名struts.xml
HUC思梦
2020/09/03
4040
Struts2笔记
前后端分离ueditor富文本编辑器的使用-Java版本
最近在写一个自己的后台管理系统(主要是写着玩的,用来熟悉后端java的知识,目前只是会简单的写点接口),想在项目中编写一个发布新闻文章的功能,想到了使用百度的ueditor富文本编辑器,网上找了很多java版本的资料,不过大部分都是前后端都在一个工程项目下,页面是jsp的。由于我这个系统是把前后端拆分开成前后端分离的。所以在根据看了网上的资料以及慢慢的摸索下,实现了在前后端分离的情况下把ueditor集成到系统中。项目页面如图:
用户1187932
2018/03/08
3.6K0
前后端分离ueditor富文本编辑器的使用-Java版本
Struts2文件上传
=======================上传(过滤大小及类型)下载文件(弹出框以流的方式下载)=======================
HUC思梦
2020/09/03
6870
Jenkins+Ansible+GitLab持续交付平台搭建-第7篇
这篇文章将继续给大家介绍Jenkins+Ansible+GitLab持续交付平台搭建。
TestOps
2022/04/07
1K0
Jenkins+Ansible+GitLab持续交付平台搭建-第7篇
很详细的SpringBoot整合UEditor教程
UEditor只提供JSP版本的后端入口代码。但提供了项目源码,因此可以根据业务需求修改源代码。
凯哥Java
2019/06/28
3.3K0
很详细的SpringBoot整合UEditor教程
php getrealpath,java_java 获取路径的各种方法(总结),(1)、request.getRealPath(“/”);//不推 – phpStudy…
(1)、request.getRealPath(“/”);//不推荐使用获取工程的根路径
全栈程序员站长
2022/11/04
6210
SpringMVC上传下载
1、需要导入jar包:ant.jar、commons-fileupload.jar、connom-io.jar。当然spring jar包不可缺少的哦  我这里用的是spring+springmvc+hibernate  可以到官网上直接下载springmvcjar即可
用户7705674
2021/09/23
5010
JAVAEE框架技术之6-springMVC拦截器和文件上传功能
文件上传是项目开发中最常见的功能之一 ,springMVC 可以很好的支持文件上传,但是SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下其不能处理文件上传工作。如果想使用Spring的文件上传功能,则需要在上下文中配置MultipartResolver。
张哥编程
2024/12/13
780
JAVAEE框架技术之6-springMVC拦截器和文件上传功能
request.getRealPath_java response
request.getSession().getServletContext().getRealPath()
全栈程序员站长
2022/11/04
3430
springboot集成ueditor富文本编辑器【需要修改ueditor源码】-和上一篇不一样
最近工作需要重新搭建公司网站,其中需要使用富文本编辑器,货比三家,最后选择了百度团队的UEditor。项目框架为springboot,所以涉及到springboot集成ueditor,动手之前就听说会有不少坑...上手了发现,emm,果不其然...(主要是上传图片部分) 具体的集成步骤如下,希望这可以帮到看文章的你。 (本人使用的是ueditor-JSP版)
凯哥Java
2019/06/28
1.7K0
springboot集成ueditor富文本编辑器【需要修改ueditor源码】-和上一篇不一样
ServletContext对象
每一个 web 应用都有且仅有一个ServletContext 对象,又称 Application 对象,从名称中可知,该对 象是与应用程序相关的。在 WEB 容器启动的时候,会为每一个 WEB 应用程序创建一个对应的 ServletContext 对象。
用户9615083
2022/12/25
2820
Servlet笔记3(Eclipse实现)
目录 --------- Servlet学习笔记1------------ ----------Servlet学习笔记2------------ ----------Servlet学习笔记3------------
别团等shy哥发育
2023/02/25
3110
小程序上传多张图片到springboot后台,返回可供访问的图片链接
其实这两个截图就可以看出,我们图片上传成功了,并且给小程序前端返回了可供访问的图片url。 话不多说,直接看代码。
编程小石头
2020/10/22
2.3K0
小程序上传多张图片到springboot后台,返回可供访问的图片链接
相关推荐
SpringMVC-07 拦截器+文件上传下载
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档