在使用Strus2中遇到的一些问题

1.想用Struts2完成提示信息的操作,比如用户登录页面,登录成功提示“登陆成功”,失败则提示“用户名或密码错误,请重新输入”

  这个时候要考虑使用PrintWriter out = response.getWriter();

           out.println(<script>alert("登陆成功");</script>);

  但是此时,out.println()里可以写window.location.href="";即可以跳转,这时与Struts2里的注解跳转页面冲突,这两个只会执行一个,(能弹出信息就不会跳转,能跳转就不会弹出信息)(可以只使用out方法,但是我想用注解=-=)

  接下来考虑request

  Struts2中使用response、request、session的方法是:1.与Servlet API的解耦访问  2.与Servlet API的耦合访问方式

  我用的是第一种方式: Struts2框架对Servlet API中的HttpServletRequest、HttpSession和ServletContext进行了封装,构造了三个Map对象来替代这三种对象。可以利用com.opensymphony.xwork2.ActionContext类获取Servlet API对象对应的Map对象。
     *ActionContext是action执行的上下文。
     Map<String,Object> request=(Map<String,Object>)ActionContext.getContext().get("request");
     Map<String,Object> response=(Map<String,Object>)ActionContext.getContext().get("response");
     Map<String,Object> session=ActionContext.getContext().getSession();

  接下来就可以用request传递你要提示的信息了。

  if(flag==true)     //在这里犯了一个低级错误,在if里一定是双等号,要不就成了赋值了
        {
            request.put("msg", "登录成功");
            result = "success";
        }else {
            request.put("msg", "用户名或密码错误,请重新输入!");
        }

  然后在相对应的jsp页面里取值,

  var m = "${requestScope.msg}";  //这里好像加上了双引号就直接把object转成了字符串,我也不知道咋回事,但是可以正常运行
     alert(m);

2.继续上一个问题, object是不能直接alert()的,这时候需要把object转换为String(这个我没用过,研究好了再来说w(゚Д゚)w)

  var obj = JSON.parse(str); //由JSON字符串转换为JSON对象

  var last=obj.toJSONString(); //将JSON对象转化为JSON字符
  或者
  var last=JSON.stringify(obj); //将JSON对象转化为JSON字符
原文地址:https://www.cnblogs.com/zmlion1995/p/5794890.html