【问题标题】:how passing HttpServletRequest argument works?传递 HttpServletRequest 参数如何工作?
【发布时间】:2016-09-25 09:00:10
【问题描述】:
@RequestMapping("/returnformv2")
public String serveletTest(HttpServletRequest request){        
    String firstname = request.getParameter("fname");
    String lastname = request.getParameter("lname");
    String fullname = lastname.concat(firstname);
    request.setAttribute("fullname", fullname);     
    return "helloworld";
}

现在,如果我从 JSP 中检索,${fullname} 是 lastname.concat(firstname)。 让我展示一些基本的java代码,比如说我调用了serveletTest("hello");

public String serveletTest(String myString){        
    System.out.println(myString);
    myString = myString.concat(world);
    return "bye world";
}

myString 应该还是“hello”吧?

对我来说,HttpServletRequest 中的 getParameter() 有意义,但 request.setAttribute() 没有意义。有人可以解释一下这是如何工作的吗?

【问题讨论】:

  • request.setAttribute("fullname", fullname);将字符串对象“全名”发送到您的 jsp。如果 HttpServletRequest 对您有意义,那么 request.setAttribute() 也应该有意义。
  • 如果您分配回myString,您将看到更新后的myString。喜欢myString=myString.concat(world);。同样适用于fullName 场景。
  • 请检查这个问题:stackoverflow.com/questions/5243754/…
  • myString 仍将是 hello,因为字符串是不可变的。 String.concat 不会改变字符串,而是返回一个新字符串,它是连接字符串的结果。

标签: java spring servlets


【解决方案1】:

我找到了我正在寻找的答案。 X( RequestDispatcher 正在做所有的魔法......

根据javadoc,

void javax.servlet.ServletRequest.setAttribute(String name, Object o)

在此请求中存储一个属性。属性在之间重置 要求。这种方法最常与 请求调度程序。

web.xml --> 配置 Spring MVC Dispatcher Servlet 并设置 URL 映射

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/spring-mvc-demo-servlet.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <url-pattern>/</url-pattern>
</servlet-mapping>

【讨论】:

    猜你喜欢
    • 2023-04-02
    • 2011-05-22
    • 2018-07-12
    • 1970-01-01
    • 2021-06-13
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2022-06-10
    相关资源
    最近更新 更多