【发布时间】: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场景。 -
myString仍将是hello,因为字符串是不可变的。String.concat不会改变字符串,而是返回一个新字符串,它是连接字符串的结果。