gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:48 26 4
gpt4 key购买 nike

我的目标是在重定向期间将模型属性从 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
另外,我的页面应该显示“欢迎罗宾”,但它只显示欢迎。

最佳答案

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 引用手册)。这有两个好处:

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

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

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com