Jsp调用Action的几种方法

  • Post author:
  • Post category:其他


转载出处:https://blog.csdn.net/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种方式,如有新用方法会不断添加。