検索

ホームページ  >  に質問  >  本文

java - Spring MVC怎么实现提交表单后跳转?

我想在addItem的页面输入了信息之后点提交,可以提交表单然后跳转到queryItems的页面。请问要怎么写?是在Controller里写还是在JSP页面里写?
基础问题,刚开始学,求回答,非常感谢。

两个Jsp页面:
addItem.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html><head><title>添加</title></head>
<body>
<form method="post" action="/items/add.action">
    输入姓名<input name="username" type="text" id="txtname"><br>
    输入邮箱<input name="useremail" type="text" id="txtemail"><br>
    <input type="submit" value="录入" >
</form>
</body>
</html>

queryItems.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt"  prefix="fmt"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>查询</title></head>
<body>
<h1>用户列表</h1>
<form action="/items/query.action" method="get">
    <c:forEach var="user" items="${userList}">
        <c:out value="${user.user_name}"/>
        ----<c:out value="${user.user_email}"/>
        <br>
    </c:forEach>
</form>
</body>
</html>

我的Controller类

@Controller
@RequestMapping("/items")
public class ItemsController {
    @Autowired
    private ItemsService itemsService;
    
    @RequestMapping("/query")
    public ModelAndView queryItems() throws Exception{
        List<User> itemsList = itemsService.findAllUser();
        ModelAndView mv = new ModelAndView();
        mv.addObject("userList", itemsList);
        mv.setViewName("queryItems");
        return mv;

    }
    @RequestMapping("/add")
    public ModelAndView addItem(String username, String useremail) throws Exception{
        User user = new User();
        user.setUser_name(username);
        user.setUser_email(useremail);
        itemsService.insertUser(user);
        ModelAndView mv = new ModelAndView();
        mv.addObject(user);
        mv.setViewName("addItem");
        return mv;
    }
}
PHP中文网PHP中文网2804日前709

全員に返信(3)返信します

  • ringa_lee

    ringa_lee2017-04-18 10:58:20

    コントローラーに書きます
    addItemページのリクエスト(あるメソッド)を処理した後、戻ってこのように書きますreturn "redirect:url";指定したURLにリダイレクトでき、そのURLがqueryItemsのURLになります

    返事
    0
  • ringa_lee

    ringa_lee2017-04-18 10:58:20

    コードを変更し、追加ページで get と post の 2 つのコントローラー メソッドを別々に作成しました。post メソッドはリダイレクトを返し、目的の効果を実現しました。他に方法はありますか?

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-18 10:58:20

    addItem.jsp はコントローラーの追加を介してジャンプされましたか?
    そうでない場合は、addItem.jsp に直接アクセスしてください。
    その後、送信するときに、成功した場合は言葉を追加します。 queryItems.jsp にジャンプし、追加が成功しなかった場合は addItem.jsp に戻ると、addItem.jsp ページでユーザーにエラー メッセージが表示されます。

    返事
    0
  • キャンセル返事