java - 在spring MVC中重定向期间传递模型属性并避免在URL中相同

标签 java spring-mvc jsp redirect

我的目标是在重定向期间将模型属性从 Controller 传递到 JSP 页面,并避免属性显示在 URL 中。下面的源代码是使用 java 数据对象从数据存储验证登录。

Controller :

@Controller
public class LoginController {
    int count;
    PersistenceManager pm = PMF.get().getPersistenceManager();

    //Instance of data class
        User user;
    ModelAndView modelAndView=new ModelAndView();

    @RequestMapping(value="/Login",method = RequestMethod.POST)
    public ModelAndView loginValidate(HttpServletRequest req){

        //Getting login values
        String uname=req.getParameter("nameLogin");
        String pswd1=req.getParameter("pswdLogin");
        count=0;


        user=new User();

        //Generating Query
        Query q = pm.newQuery(User.class);
        q.setFilter("userName == userNameParam");
        q.declareParameters("String userNameParam");

        try{
            List<User> results = (List<User>) q.execute(uname);  
            for (User u: results) {

                String userName=u.getUserName();

                if(userName.equals(uname)){

                    System.out.println(u.getPassword());

                    if(u.getPassword().equals(pswd1)){
                        count=count+1;
                        modelAndView.setViewName("redirect:welcome");
                        modelAndView.addObject("USERNAME",uname);
                        return modelAndView;

                    }
         //rest of the logic 
    }

JSP:

 <h1>Welcome ${USERNAME} </h1>

我当前的网址是 /welcome?USERNAME=robin
我的目标是将其显示为 /welcome
另外,我的页面应该显示“Welcome robin”,而它只显示 Welcome。

最佳答案

RedirectAttributes 仅适用于 RedirectView,请照此办理

@RequestMapping(value="/Login",method = RequestMethod.POST)
public RedirectView loginValidate(HttpServletRequest req, RedirectAttributes redir){
...

    redirectView= new RedirectView("/foo",true);
    redir.addFlashAttribute("USERNAME",uname);
    return redirectView;
}

那些 flash 属性 是通过 session 传递的(并且在使用后立即被销毁 - 有关详细信息,请参阅 Spring 引用手册)。这有两个兴趣:

  • 它们在 URL 中不可见
  • 你不限于字符串,但可以传递任意对象。

关于java - 在spring MVC中重定向期间传递模型属性并避免在URL中相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24301114/

相关文章:

javascript - 如何从通过 jquery ajax 调用发送到 Controller 的序列化表单数据中检索特定列表

java - 如何在 jsp 简单标记中设置/检索 applicationScope 属性?

jsp - 直接在EL中访问Java类的字段

java - for 循环内的 Thymeleaf 帖子形式

java - 使用 SimpleReadWriteEJBLock 的锁定问题

java - 打印 aLine 并删除第一个 'c' 'C' 'd' 或 'D'

java - 将 K 互补数组对的效率提高到 O(NlogN)

java - 无法将 json 字符串绑定(bind)到 Spring MVC Controller 中的对象?

spring - OAUTH的Spring Rest模板

Java,如何在纯java中使用表达式语言