Jsp调用Action的几种方法

本文介绍了使用Spring+SpringMVC+MyBatis(SSM)框架进行Web应用开发时,从前端JSP页面向后端Java Action类传递参数及实现页面跳转的三种常见方法:表单提交、使用<a href=#>链接</a>和JavaScript调用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

转载出处:https://blog.youkuaiyun.com/wellven_chen/article/details/80078444


由于最近刚刚开始接触Spring+SpringMVC+mybatis的SSM框架来开发Web应用,页面使用的是Jsp。

所以经常会从Jsp页面调用到后端Java中Action类,因此希望总结一下,下次遇到类似问题不用再翻代码去查看:

1. 最常见的form表单提交:

一般情况下,比如在登陆界面,因为主要只涉及到登陆的功能,我们会使用form表单提交的方式来向后端Action传值以及跳转页面

举例:

前端Jsp页面中的表单提交方法:

  1. <form action="<%=basePath%>login/isLogin" method="post">
  2. <input type="text" name="username"/>
  3. <input type="text" name="password"/>
  4. <input class="continue" type="submit" value="登录">
  5. </form>

后端Java中Action类的接收方法:

  1. @RequestMapping( "/login")
  2. public class LoginAction {
  3. @RequestMapping(value = "/isLogin", method = RequestMethod.POST)
  4. public ModelAndView isLogin(HttpServletRequest request, HttpSession session, User user) {
  5. if (user == null) {
  6. logger.error( "could not find user");
  7. // return error page
  8. }
  9. ModelAndView mv = new ModelAndView();
  10. User u = userService.getUser(user);
  11. if (u == null) {
  12. mv.addObject( "msg", "用户名和密码不匹配 或 此用户不存在");
  13. mv.setViewName( "/index.jsp");
  14. return mv;
  15. }
  16. mv.setViewName( "/Successful.jsp");
  17. session.setAttribute( "userLogin", u);
  18. return mv;
  19. }

以上的案例的请求是POST请求,由于在后端Java类中存在user的VO类,其中也包括了name和password,所以能够直接获取到User类。


2. 通过<a href="#"></a>的方式调用后端Java中的Action类

如果页面中需要对某个对象进行比较详细的处理或者查询,我们也可以使用<a href="#"></a>的方式进行页面跳转和传值

举例:

前端Jsp页面的<a href="#"></a>方法:

<a href="<%=basePath%>inquiry/Detail/${uniq_code}" title="Detail">Detail</a>
后端Java中Action类的接收方法:

  1. @RequestMapping("/inquiry")
  2. public class TxnInqAction {
  1. @RequestMapping(value = "Detail/{uniq_code}", method = RequestMethod.GET)
  2. public ModelAndView detailList(HttpServletRequest request, HttpSession session,
  3. @PathVariable("uniq_code") String uniqCode) {
  4. ModelAndView mv = new ModelAndView();
  5. if (uniqCode == null) {
  6. mv.setViewName( "pages/TxnInq_list.jsp");
  7. }
  8. ………………
  9. mv.setViewName( "pages/TxnDetail.jsp");
  10. return mv;
  11. }
}
通过 <a href="#"></a>方法来调用后端Java Action类的请求是Get请求,一般性用的比较少因为Get请求可以直接从URL中看到传的真实参数


3. 通过JS的方法调用后端Java中的Action类

如果前端同一个页面有多个POST请求需要传参和跳转,可以使用该方法。

举例:

前端JS方法调用:

<a href="#" onClick="deleteAuth(${userId})" title="Delete">删除人员</a>
  1. <script type= "text/javascript">
  2. function deleteAuth(authId)
  3. {
  4. $.confirm({
  5. title: "请确认",
  6. content: "是否删除此用户?",
  7. buttons: {
  8. 确定: function () {
  9. document.dpage.action= "<%=basePath%>user/delete/"+authId;
  10. document.dpage.submit() ;
  11. },
  12. 取消: function () {
  13. }
  14. },
  15. useBootstrap: false,
  16. });
  17. }
  18. < /script>
后端Java Action类中的接收方法:
  1. @RequestMapping(value = "/delete/{userid}", method = RequestMethod. POST)
  2. public ModelAndView deleteUser(HttpServletRequest request, HttpSession session,
  3. @PathVariable("userid") String userId) {
  4. ModelAndView mv = new ModelAndView();
  5. userService.userSessionTransfer(session, mv, logger);
  6. userService.deactivateUser(userId);
  7. List<User> userList = userService.findAll();
  8. mv.addObject(CharacterCfg.USER.USERLIST, userList);
  9. mv.setViewName( "pages/user_cfg/user_list.jsp");
  10. return mv;
  11. }
该方法与方法2的区别就只是在于一个是GET请求一个是POST请求。

目前只使用到了以上3种方式,如有新用方法会不断添加。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值