马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
x
目录
1.Spring MVC控制器技术
定义控制器
定义Action
Action地址中利用路径变量
Action限定哀求范例
2.视图向控制器传值
视图向控制器传参的常用方式
案例演示:
登录页面核心逻辑:
2.2视图向控制器传参
第一种方式:利用HttpServletRequest吸收哀求参数
第二种方式:利用简单数据范例吸收哀求参数
第三种方式:利用实体类对象吸收哀求参数
3. 控制器向视图传值
控制器向视图传参的常用方式
控制器向视图传参(续上面的案例)
用HttpServletRequest通报数据
用Model大概Map通报数据
用ModelAndView通报数据
推荐方式:
视图获取数据
4. 编程实操
Spring-mvc.xml设置
登录视图user/login.jsp:
系统首页视图home/index.jsp
实体类User:
用户登录时的提交对象LoginPo
业务层UserService
控制器UserController
控制器HomeController
运行验证:
至此,完成了mvc实操的要求与显示结果
1.Spring MVC控制器技术
定义控制器
Spring MVC 中利用 org.springframework.stereotype.Controller 注解声明某类的实例是控制器 定义控制器 步骤 如下: ① 为控制器类 加注解 @Controller ② 自动扫描 控制器所在 包
定义Action
Spring MVC 中利用 @RequestMapping 将哀求与处理方法一一对应 @RequestMapping 负责将不同哀求映射到对应的控制器方法 , 即 Action @RequestMapping 不仅仅可以定义在 方法 处,还可以定义在 类 上 建议接纳 类级别注解 ,将相关处理放在同一控制器中 类注解 url + 方法注解的 url Action地址中利用路径变量
在 @RequestMapping 指定的 URL 时可含有变量 利用 @PathVariable 指定形参吸收 url 的参数值 Action限定哀求范例
@RequestMapping 可通过 method 属性 来限定 哀求 范例 ,如 GET 、 POST 等 。 method 利用枚举类 RequestMethod 来定义 哀求范例 URL 哀求方式 和 Action 中 method 属性值 不符, 将拒绝哀求 也可以利用组合注解来限定方法吸收哀求的范例。
2.视图向控制器传值
视图向控制器传参的常用方式
① 利用 HttpServletRequest 吸收哀求参数 ② 利用 简单数据范例 吸收哀求参数 ③ 利用 实体类对象 吸收哀求参数 案例演示:
案例:用户登录
输入用户名、暗码
提交验证登录
登录成功到成功页面
登录失败到失败页面
咱不访问数据库,而假定
登录账号=admin
登录暗码password=123456
为登录成功的充要条件
登录页面核心逻辑:
2.2视图向控制器传参
第一种方式:利用HttpServletRequest吸收哀求参数
利用 HttpServletRequest 作为 Action 的参数来吸收用户哀求 ,从用户哀求中获取参数值,如下:
第二种方式:利用简单数据范例吸收哀求参数
这种方式要保证 方法形参名 要和 用户哀求参数名 保持一致 扩展:如果不一致,则利用 @RequestParam 指定
这种方式@RequestParam里的值要和哀求参数名保持一致
第三种方式:利用实体类对象吸收哀求参数
( 1 )在项目下新建 “entity” 包,包下新建一个实体类 “ LoginParam ” 用于吸收参数
(2)在Action中利用“LoginParam”对象作为参数来吸收表单数据
3. 控制器向视图传值
控制器向视图传参的常用方式
控制器获取到数据后,需要将数据渲染到视图中
常用方式如下 ① 通过 HttpServletRequest 通报数据 ② 利用 Model 大概 Map 大概 ModelMap 通报数据 ③ 利用 ModelAndView 通报数据 控制器向视图传参(续上面的案例)
用HttpServletRequest通报数据
通过 request.setAttribute ( key,value ) 将通报到视图的数据放入哀求域中
用Model大概Map通报数据
可利用SpringMVC提供的Model对象来完成控制器和视图间数据的通报
Model 是 Map 布局,可用 Map/ ModelMap 作为入参 model.addAttribute ( key,value ) 将通报数据放入哀求中
用ModelAndView通报数据
推荐方式:
视图获取数据
视图端通过EL表达式${键名}来获取数据
在 login_succ.jsp 页面中通过 ${ param.username }大概${requestScope. param.user name} 取值
4. 编程实操
实现用户登录功能 登录成功跳转到系统首页 登录失败返回登录页面,并显示错误信息 Spring-mvc.xml设置
- <?xml version="1.0" encoding="UTF-8"?>
- <beans xmlns="http://www.springframework.org/schema/beans"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xmlns:context="http://www.springframework.org/schema/context"
- xmlns:mvc="http://www.springframework.org/schema/mvc"
- xsi:schemaLocation="http://www.springframework.org/schema/beans
- http://www.springframework.org/schema/beans/spring-beans.xsd
- http://www.springframework.org/schema/context
- http://www.springframework.org/schema/context/spring-context.xsd
- http://www.springframework.org/schema/mvc
- http://www.springframework.org/schema/mvc/spring-mvc.xsd">
- <!-- 将控制器扫描到容器中 -->
- <context:component-scan base-package="org.flowerfog.service"/>
- <context:component-scan base-package="org.flowerfog.controller"/>
- <!-- 开启SpringMVC框架的注解驱动 -->
- <mvc:annotation-driven/>
- <!--视图解析器-->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <property name="prefix" value="/WEB-INF/views/"/>
- <property name="suffix" value=".jsp"/>
- </bean>
- </beans>
复制代码 登录视图user/login.jsp:
- <%--
- Created by IntelliJ IDEA.
- User: flowerfog
- Date: 2024/11/14
- Time: 15:13
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
- <html>
- <head>
- <title>用户登录</title>
- </head>
- <body>
- <h1>用户登录</h1>
- <form method="POST" action="${pageContext.request.contextPath}/user/doLogin">
- 登录账号:<input type="text" name="account"><br />
- 登录密码:<input type="password" name="password"><br />
- <input type="submit" value="登录" />
- <input type="reset" value="重置" />
- </form>
- <div style="color: red">${message}</div>
- </body>
- </html>
复制代码 系统首页视图home/index.jsp
- <%--
- Created by IntelliJ IDEA.
- User: flowerfog
- Date: 2024/11/14
- Time: 15:14
- To change this template use File | Settings | File Templates.
- --%>
- <%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
- <html>
- <head>
- <title>首页</title>
- </head>
- <body>
- 欢迎:${loginUser.name}进入系统
- </body>
- </html>
复制代码 实体类User:
- package org.flowerfog.pojo;
- import lombok.Data;
- /**
- * 实体类:用户
- */
- @Data
- public class User {
- private Integer id;
- private String name;
- private String account;
- private String password;
- private Integer status;
- }
复制代码
用户登录时的提交对象LoginPo
- package org.flowerfog.dto;
- import lombok.Data;
- /**
- * 用户登录提交对象
- */
- @Data
- public class LoginPo {
- private String account;
- private String password;
- }
复制代码 业务层UserService
- package org.flowerfog.service;
- import org.flowerfog.dto.LoginPo;
- import org.flowerfog.pojo.User;
- import org.springframework.beans.BeanUtils;
- import org.springframework.stereotype.Service;
- @Service
- public class UserService {
- public User login(LoginPo loginPo) {
- //暂不访问数据库
- if("admin".equals(loginPo.getAccount()) && "123456".equals(loginPo.getPassword())) {
- User user = new User();
- BeanUtils.copyProperties(loginPo, user);
- user.setId(1);
- user.setName("系统管理员");
- user.setStatus(0);
- return user;
- }else{
- return null;
- }
- }
- }
复制代码 控制器UserController
- package org.flowerfog.controller;
- import org.flowerfog.dto.LoginPo;
- import org.flowerfog.pojo.User;
- import org.flowerfog.service.UserService;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.PostMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.servlet.ModelAndView;
- @Controller
- @RequestMapping("/user")
- public class UserController {
- @Autowired
- UserService userService;
- @GetMapping(value = "/login")
- public ModelAndView login() {
- ModelAndView mv = new ModelAndView();
- mv.setViewName("user/login");
- return mv;
- }
- @PostMapping(value = "/doLogin")
- public ModelAndView doLogin(LoginPo loginPo) {
- ModelAndView mv = new ModelAndView();
- User user = userService.login(loginPo);
- if (user != null) {
- mv.setViewName("home/index");
- mv.addObject("loginUser", user);
- } else {
- mv.setViewName("user/login");
- mv.addObject("message","账号或密码错误");
- }
- return mv;
- }
- }
复制代码 控制器HomeController
- package org.flowerfog.controller;
- import org.flowerfog.pojo.User;
- import org.springframework.stereotype.Controller;
- import org.springframework.web.bind.annotation.GetMapping;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.servlet.ModelAndView;
- @Controller
- @RequestMapping("/home")
- public class HomeController {
- @GetMapping(value = "/index")
- public ModelAndView index() {
- ModelAndView mv = new ModelAndView();
- mv.setViewName("home/index");
- User user = new User();
- user.setName("");
- mv.addObject("loginUser", user);
- return mv;
- }
- }
复制代码 运行验证:
至此,完成了mvc实操的要求与显示结果
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |