再上一篇写了 springmvc 的基本配置, springmvc 的配置文件还可以使用简化配置,
在之前我们要在 springmvc 的配置文件中配置处理器映射器和控制器适配器, 其实这两个可以使用简化配置
使用简化配置后就可以不用再配置控制器适配器等了.
下面写 springmvc 的传参:
首先创建一个登录的页面, 页面内有表单, 输入用户名密码后登录提交后台,
- <%--
- Created by IntelliJ IDEA.
- User: Administrator
- Date: 2019/6/25
- Time: 20:21
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <HTML>
- <head>
- <title>Title</title>
- </head>
- <body>
- <form action="user/login.do">
- 用户名:<input type="text" name="username">
- 密码:<input type="password" name="password">
- <input type="submit">
- </form>
- </body>
- </HTML>
login.jsp
然后创建控制器类:
- package com.zs.controller;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.Web.bind.annotation.RequestMethod;
- @Controller
- @RequestMapping("/user")
- public class UserController {
- /**
- * 通过映射地址找到对应的方法, method 为请求方式
- * @param username
- * @param password
- * @return
- */
- @RequestMapping(value = "/login",method = {RequestMethod.GET,RequestMethod.POST})
- public String login(String username, String password) {
- if (username.equals("zhangsan") && password.equals("123456")) {
- return "index";
- }
- /* 在 springmvc 视图解析器中配置了返回的前缀以及后缀, 但是在这里, 我们将 login 放在 Web 文件夹下, index 放在 / Web-INF/views/
- * 文件夹下, 当登陆成功时, return "index" 会通过视图解析器添加前缀后缀, 当我们返回的页面不在 / Web-INF / 文件夹下时
- * 就需要使用 forward: 来重新写地址, 就不经过视图解析器了,
- * forward: 请求转发
- * redirect: 重定向 */
- return "forward:/login.jsp";
- }
- }
- UserController
然后运行测试, 输入正确的信息登录成功, 输入错误的信息, 登陆失败
这里出现一个问题, 就是当我们输入错误的信息后请求转发给了 login.jsp, 这时我们继续在此页面输入正确的信息, 会发现地址栏错误; 打开 F12 网络查看, 发送的请求是这样的:
注意有两个 user, 这是因为我们在 user 这个地址下又发送了一次 user/login.do, 为了解决这个问题, 可以在 jsp 页面配置绝对地址
这里要注意, 之前忘记导两个包
没有导包的话是不能在 jsp 页面设置地址的, 导入包后在 jsp 页面添加下面代码:
然后在运行, 测试, 登陆失败后重新输入值, 可以正确调转页面.
还可以使用 jstl 标签库的 < c:url /> 标签, 用法如下:
这两种方法任选其一即可. 上面写传参是直接传参, 还可以使用模型传参
来源: http://www.bubuko.com/infodetail-3105403.html