[英]Passing value of variable from one method to another
这似乎很容易,但是我不知道为什么会有这样的困难...所以在getURL中,我返回了字符串“ total”。 我试图返回方法请求中已经具有的SAME值“总计”。 有什么建议吗? 提前致谢!
public class Multiply implements Controller {
static int product;
private static String total;
public static String getURL(HttpServletRequest req) {
String scheme = req.getScheme(); // http
String serverName = req.getServerName(); // hostname.com
int serverPort = req.getServerPort(); // 80
String contextPath = req.getContextPath(); // /mywebapp
String servletPath = req.getServletPath(); // /servlet/MyServlet
String pathInfo = req.getPathInfo(); // /a/b;c=123
String queryString = req.getQueryString(); // d=789
String[] item = queryString.split("&");
product = 1;
for (int i = 0; i < item.length; i++) {
String[] s = item[i].split("=");
String name = s[0];
String value = s[1];
int numValue = Integer.parseInt(value);
product = product * numValue;
}
total = "" + product;
return total;
}
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
String Mess = total;
ModelAndView modelAndView = new ModelAndView("hello");
modelAndView.addObject("message", Mess);
return modelAndView;
}
}
total
是Multiply
类的成员变量。 从任何一种方法访问它都应该没有问题。 请记住,它尚未初始化。 因此,除非您在handleRequest
之前调用getURL
,否则total
不会分配给任何String
并且会给您一个错误。
另外,我会在几个方面关注您的大写字母。
编辑:只是为了澄清,从技术上讲,您不是将值从一种方法传递给另一种方法。 您正在两种方法之间访问共享的成员变量。
您在执行此操作时遇到许多问题。 首先,通过声明total
static,此类的所有实例将具有相同的total
值。 如果使用的框架可以创建并重用控制器,则可能会导致问题,因为该类的所有实例都将引用并更新相同的成员字段。
您想要的是让getURL
方法返回total的值,然后从handleRequest
调用它。 getURL
可以是静态的,因为它不依赖于非静态成员字段。 您实际上应该将getURL
重命名为getTotal
或getTotalFromURL
因为这是您正在做的。 您要求getURL
进行的操作实际上是副作用 ,因此应避免这种做法。
public class Multiply implements Controller {
public static String getURLTotal(HttpServletRequest req) {
String scheme = req.getScheme(); // http
String serverName = req.getServerName(); // hostname.com
int serverPort = req.getServerPort(); // 80
String contextPath = req.getContextPath(); // /mywebapp
String servletPath = req.getServletPath(); // /servlet/MyServlet
String pathInfo = req.getPathInfo(); // /a/b;c=123
String queryString = req.getQueryString(); // d=789
String[] item = queryString.split("&");
int product = 1;
for (int i = 0; i < item.length; i++) {
String[] s = item[i].split("=");
String name = s[0];
String value = s[1];
int numValue = Integer.parseInt(value);
product = product * numValue;
}
return Integer.toString(product);
}
public ModelAndView handleRequest(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException
{
String Mess = Multiply.getURLTotal(request);
ModelAndView modelAndView = new ModelAndView("hello");
modelAndView.addObject("message", Mess);
return modelAndView;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.