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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 《前端运维》二、Nginx–2请求处理流程及核心模块

    前一篇内容,我们学习了nginx的一些基本概念、安装和目录的作用。这篇文章我们来学习一些更加深入的内容。一、Nginx请求处理流程我们先来看张图吧:我们看上图,首先客户端请求到Nginx服务器,

    2022年3月25日
    118
  • 数据归一化及三种方法(python)

    数据归一化及三种方法(python)数据标准化(归一化)处理是数据挖掘的一项基础工作,不同评价指标往往具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果,为了消除指标之间的量纲影响,需要进行数据标准化处理,以解决数据指标之间的可比性。原始数据经过数据标准化处理后,各指标处于同一数量级,适合进行综合对比评价。以下是三种常用的归一化方法:min-max标准化(Min-MaxNormalization)也称为离差标准化,…

    2022年6月23日
    43
  • js获取当前日期时间「建议收藏」

    js获取当前日期时间「建议收藏」functionThistime(){//当前日期vardate=newDate();varyear=date.getFullYear();varmonth=date.getMonth()+1;varday=date.getDate();varmytime=date.toLocaleTimeString();//获取当前时间//myDate.toLocaleString()

    2025年7月11日
    1
  • python自定义异常和主动抛出异常(raise)

    python自定义异常和主动抛出异常(raise)前言有时候python自带异常不够用,如同java,python也可以自定义异常,并且可以手动抛出。注意,自定义异常只能由自己抛出。python解释器是不知道用户自定义异常是什么鬼的。raise语句主动抛出异常。格式:主动抛出异常终止程序raise异常名称(‘异常描述’)raiseRuntimeError(‘testError’)主动抛出这个异常,并加以解释。自定义异常pytho

    2022年10月17日
    0
  • c语言输入输出格式

    c语言输入输出格式//最近被某题的输入输出卡了。。。转一波随时看。。。菜哭<spanstyle="font-family:KaiTi_GB2312;font-size:18px;">本小节介绍的是向标准输出设备显示器输出数据的语句。在C语言中,所有的数据输入/输出都是由库函数完成的。因此都是函数语句。本小节先介绍printf函数和putchar函数。printf函数printf函数称为格式输出函数,其…

    2022年7月24日
    14
  • qtabwidget tab样式_qt geometry

    qtabwidget tab样式_qt geometrytabWidget=newQTabWidget();tabWidget->setUsesScrollButtons(true);//使QTabWidget显示滚动条tabWidget->setTabsClosable(true);//设置tab的关闭选项tabWidget->setTabsClosable(true)…

    2022年9月23日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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