java lang illegalargument_servlet内置对象

java lang illegalargument_servlet内置对象小编典典介绍该ServletContext#getRealPath()被intented到Web内容的路径(在服务器的磁盘文件系统上展开的WAR文件夹结构的路径)转换为绝对磁盘文件系统路径。该”/”代表Web内容根。即,它代表web以下项目结构中的文件夹:YourWebProject|–src|:||–web||–META-INF||`–MANIFE…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

小编典典

介绍

该ServletContext#getRealPath()被intented到Web内容的路径(在服务器的磁盘文件系统上展开的WAR文件夹结构的路径)转换为绝对磁盘文件系统路径。

该”/”代表Web内容根。即,它代表web以下项目结构中的文件夹:

YourWebProject

|– src

| :

|

|– web

| |– META-INF

| | `– MANIFEST.MF

| |– WEB-INF

| | `– web.xml

| |– index.jsp

| `– login.jsp

:

因此,将传递”/”给getRealPath()将返回你/web项目的扩展WAR文件的文件夹的绝对磁盘文件系统路径。喜欢的东西/path/to/server/work/folder/some.war/,你应该能够在进一步使用它File或FileInputStream。

请注意,大多数入门者似乎并没有看到/意识到你实际上可以将整个Web内容路径传递给它,并且他们经常使用

String absolutePathToIndexJSP = servletContext.getRealPath(“/”) + “index.jsp”; // Wrong!

甚至

String absolutePathToIndexJSP = servletContext.getRealPath(“”) + “index.jsp”; // Wronger!

代替

String absolutePathToIndexJSP = servletContext.getRealPath(“/index.jsp”); // Right!

永远不要在其中写入文件

还要注意,即使你可以使用写入新文件FileOutputStream,只要重新部署WAR ,所有更改(例如,新文件或已编辑文件)都将丢失;原因很简单,所有这些更改都未包含在原始WAR文件中。因此,所有尝试将上传的文件保存在其中的初学者都做错了。

此外,如果未将服务器配置为将WAR文件扩展为磁盘文件系统,而是扩展为例如虚拟文件系统的内存,getRealPath()则将始终返回null或完全意外的路径。

getRealPath()不可携带;你最好不要使用它

getRealPath()小心使用。实际上,实际上没有明智的用例。根据我20年的Java EE经验,总是有另一种方法比更好,更可移植getRealPath()。

如果你实际需要的只是获取InputStreamWeb资源,请更好地使用它,ServletContext#getResourceAsStream()而不管WAR的扩展方式如何。所以,如果你想例如一个InputStream的index.jsp,那么就不能这样做:

InputStream input = new FileInputStream(servletContext.getRealPath(“/index.jsp”)); // Wrong!

但是,请执行以下操作:

InputStream input = servletContext.getResourceAsStream(“/index.jsp”); // Right!

或者,如果你打算获取所有可用的Web资源路径的列表,请ServletContext#getResourcePaths()改用。

Set resourcePaths = servletContext.getResourcePaths(“/”);

你可以得到一个单独的资源为URL通过ServletContext#getResource()。null资源不存在时将返回此值。

URL resource = servletContext.getResource(path);

或者,如果你打算保存上载的文件或创建临时文件,请参见下面的“另请参阅”链接。

2020-02-27

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/192921.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 反射Dll注入

    反射Dll注入上一篇我们介绍了CreateRemoteThread+LoadLibrary进行注入的技巧。但是这种方法实在是太过格式化,所以几乎所有的安全软件都会监控这种方法。所以HarmanySecurity的StephenFewer提出了ReflectiveDLLInjection,也就是反射DLL注入。其和CreateRemoteThread一样也是分为两部分,注入器和注入的DLL。但是注入DLL的装载由我们自主实现,由于反射式注入方式并没有通过LoadLibrary等API来完成DLL的装载,DLL并没有

  • asp.net mvc ajax 例子

    asp.net mvc ajax 例子 一、建立一个mvc项目。 二、在Controllers文件夹中加入一个新的控制器ajaxController。代码如下:   usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.Mvc;usingSystem.Web.Mv

  • marquee滚动方向_marquee无缝滚动

    marquee滚动方向_marquee无缝滚动首先让我们认识这个标签,它是成对出现的标签,首标签和尾标签之间的内容就是滚动内容。标签的属性主要有behavior、bgcolor、direction、width、height、hspace、vspace、loop、scrollamount、scrolldelay等,它们都是可选的。behavior属性behavior属性的参数值为alternate、scroll、slide中的一

    2022年10月29日
  • Istio组件日志设置[通俗易懂]

    1.istio-pilot日志级别编辑istio-system.deployment.istio-pilot,修改args中–log_output_level=default:指定日志级别2.istio-policy日志级别设置同istio-pilot3.istio-proxy(envoy)日志级别设置进入istio-proxy容器中,通过如下命令进行设置:curl-…

  • 理解class.forName()

    理解class.forName()

    2021年11月28日
  • 退出vi退出不了_vim怎么保存

    退出vi退出不了_vim怎么保存1.提示没有文件名2.强制退出(!wq)后再次输入依然进入vi模式故障原因:直接vi后未加文件名

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号