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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • EXE文件结构及读取方法

    EXE文件结构及读取方法

    2022年2月3日
    62
  • LoadRunner AJAX TruClient协议Tips and Tricks

    LoadRunner AJAX TruClient协议Tips and Tricks

    2021年8月25日
    50
  • 卡巴斯基实时地图_osek os

    卡巴斯基实时地图_osek os为人熟知的网络安全和杀毒软件公司卡巴斯基推出了新的安全操作系统:KasperskyOS。卡巴斯基CEOEugeneKaspersky在博客文章开头就展示了一个黑盒子——一款三层交换机,这台设备就是采用了卡巴斯基的操作系统,其上赫然写着:PoweredbyKasperskyOS卡巴斯基操作系统。“这款系统是为那些对数据安全有特别需求的网络准备的。”

    2022年8月20日
    6
  • mysql 如何修改用户密码_如何更改MySQL用户密码

    mysql 如何修改用户密码_如何更改MySQL用户密码在本教程中,我们将向您展示如何更改MySQL用户密码。这些说明应适用于任何现代Linux发行版,例如Ubuntu18.04和CentOS7。先决条件根据系统上运行的MySQL或MariaDB服务器版本,您将需要使用不同的命令来更改用户密码。您可以通过发出以下命令来找到数据库服务器版本:mysql–version如果您的系统中安装了MySQL,则输出将类似于以下内容:mysqlVer14…

    2022年6月17日
    38
  • Hybrid App 和 React Native 开发那点事

    Hybrid App 和 React Native 开发那点事简介:HybridApp(混合模式移动应用)开发是指介于Web-app、Native-App这两者之间的一种开发模式,兼具「NativeApp良好用户交互体验的优势」和「WebApp跨平台开发的优势」。很多人都知道,ReactNative是Facebook开源的框架,可以直接用Javascript开发原生的APP,本文则会围绕开发中的具体实践问题进行讨论。

    2025年6月21日
    2
  • 电商后台管理系统主页布局[通俗易懂]

    电商后台管理系统主页布局[通俗易懂]目录一点睛1整体布局1.1先上下划分,在左右划分。1.2菜单分两级,并且可以折叠。2通过接口获取菜单数据二代码1新增主页Home.vue2注册组件element.js3修改main.js4新增欢迎组件Welcome.vue5修改路由index.js三测试效果四代码参考一点睛1整体布局1.1先上下划分,在左右划分。1.2菜单分两级,并且可以折叠。2通过接口获取菜单数据通过ax…

    2022年5月22日
    51

发表回复

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

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