zoukankan      html  css  js  c++  java
  • 修改上传功能时遇到的问题

    问题描述:使用s2时,页面使用<input>在action中实现了接口ServletRequestAware。使用set方式注入获取request

    public class XXController extends BaseAction implements ServletRequestAware{
      public HttpServletRequest req;

       @Override
       public void setServletRequest(HttpServletRequest req) {
        this.req= req;

       }

    }

    (注:以上为改别人代码 保持代码原样。项目开发中个人认为不应该这样去获取request,详细文档参考struts2官方教程)

    在获取上传绝对路径处,代码如下:

    rootPath =request.getSession().getServletContext().getRealPath("/")
    System.out.println(rootPath);

    输出结果:

      D:\workspace\xx\webroot\

    ---------------------------------------------分割线---------------------------------

    以上结果是在XP环境下测试。问题来了,本人电脑是WIN7,在测试上传功能时候返回500错误(有缓存图片的路径,自定义异常,所以服务器这里返回500)。测试后发现,win7系统下(旗舰版)输出结果为:

      D:\workspace\xx\webroot

    所以以为了是系统的问题。但是突然想起(A君,暂时叫A君好了)可能使用的是Tomcat做开发,而本人使用的是Jetty开发。于是又换容器测试。最终发现,果然是容器的问题。

    问题:同样实现了Servlet标准为什么容器不同路径不同呢?待查出答案啊。!!!!

    ----------------------------------------坑爹的分割线------简直就是坑爹-----------------

    由于改别人代码 不敢乱动啊,所以记录下。另外说明下,action里获取request本人推荐方法是:      ServletActionContext.getRequest().getSession().getServletContext().getRealPath("/")

    说明:因为使用情况不同,所以本人用这种方法较多。

  • 相关阅读:
    Spring框架——JdbcTemplate(Spring对Jdbc的封装)
    Spring框架——批处理(batch)和事务(Transaction)
    Spring框架——AOP(面向切面编程)详解
    Spring框架——关于IOC容器和注解的36个小实验
    学习新技术的 10 个建议
    解决 PHP Fatal error: Call-time pass-by-reference has been removed
    mysql下float类型使用一些误差详解
    windows 如何查看端口占用情况
    插件机制
    .net/c#常用框架/中间件简介
  • 原文地址:https://www.cnblogs.com/GYoungBean/p/2679140.html
Copyright © 2011-2022 走看看