簡體   English   中英

如何在Spring MVC控制器內傳遞查詢?

[英]how do I pass a query within a spring mvc controller?

假設您在普通的servlet中沒有使用spring mvc就擁有這樣的東西:

if(username == "X" && password =="Y"){
  response.sendRedirect("./user/welcomePage.jsp");
}else{
  response.sendRedirect("./login.jsp?wrongPass=true");
 }

如果用戶名&&密碼錯誤,請在重定向到login.jsp頁面后,在用戶名和密碼錯誤的情況下,在login.jsp頁面中的紅色部分告知用戶:

<p style="color:red";
 <%= (request.getParameter("wrongPass")==null)? "visibility:hidden":"" %>;">
    Your username/password is wrong !</p>

我的問題是,有什么辦法可以傳遞這樣的參數:

response.sendRedirect("./login.jsp?wrongPass=true");

在Spring MVC控制器內部?

如果我們有一個像這樣的控制器:

@Controller
@RequestMapping(value ="/")
public class Welcome{
public String welcome(@RequestParam("j_username") String username, 
        @RequestParam("j_password") String password){
       .
       .
       .
   return "login";

作為日志,因為我們需要返回一個String來形成頁面&,因為我們定義了InternalResourceViewResolver:

<bean >class="org.springframework.web.servlet.view.InternalResourceViewResolver">
   <property name="prefix" value="/WEB-INF/views/" />
   <property name="suffix" value=".jsp" />
</bean>

如果我們在控制器中傳遞參數,例如:使用InternalResourceViewResolver后返回“ login?wrongPass = true”,則會創建類似以下內容:

login?wrongPass=true.jsp   Which is totally wrong ...

現在,解決這個問題的解決方案是(不)在我們的控制器內部添加String並在JSP中獲取參數的解決方案? 我希望瀏覽器網址變成類似以下內容:

http://localhost:8080/myProject/login.jsp?wrongPass=true

您可以使用重定向前綴,然后可以使用絕對URL

return "redirect:http://localhost:8080/myProject/login.jsp?wrongPass=true";

您也可以使用HttpServletRequest的方法動態地構建絕對URL。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM