Spring MVC 之请求处理方法可接收参数(三)

简介: 请求处理方法可接收参数 今天学习了前三个方法。   1、作用域对象2、单个表单提交数据3、表单数据封装的Bean对象 首先创建一个实体对象。 1 package com.cy.springannotation.

请求处理方法可接收参数

今天学习了前三个方法。

 

1、作用域对象
2、单个表单提交数据
3、表单数据封装的Bean对象

首先创建一个实体对象。

 1 package com.cy.springannotation.entity;
 2 /**
 3  * 定义一个表单实体类
 4  * @author acer
 5  *
 6  */
 7 public class UserBean {
 8     //要求属性名必须要和表单的参数名一样的!
 9     private String username;
10     private String password;
11     public String getUsername() {
12         return username;
13     }
14     public void setUsername(String username) {
15         this.username = username;
16     }
17     public String getPassword() {
18         return password;
19     }
20     public void setPassword(String password) {
21         this.password = password;
22     }
23     
24 
25 }

 

简单的一个jsp页面!login.jsp

为了方便观察 password的type为text。

 1 <%@ page language="java" import="java.util.*" pageEncoding="utf-8" contentType="text/html; charset=utf-8"%>
 2 <%
 3 String path = request.getContextPath();
 4 String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
 5 %>
 6 
 7 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 8 <html>
 9   <head>
10     <base href="<%=basePath%>">
11     
12     <title>登录页面</title>
13     
14     <meta http-equiv="pragma" content="no-cache">
15     <meta http-equiv="cache-control" content="no-cache">
16     <meta http-equiv="expires" content="0">    
17     <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
18     <meta http-equiv="description" content="This is my page">
19     <!--
20     <link rel="stylesheet" type="text/css" href="styles.css">
21     -->
22 
23   </head>
24   
25   <body>
26   <form action="login.do" method="post">
27     <table>
28        <tr>
29            <td>用户名:</td>
30            <td><input type="text" name="username"/></td>
31        </tr>
32        <tr>
33            <td>密码</td>
34            <td><input type="text" name="password"/></td>
35        </tr>
36        <tr>
37            <td colspan="2"> <input type="submit" value="提交"/> </td>
38        </tr>
39     </table>
40   </form>
41   </body>
42 </html>

 

 

LoginController.java
 1 package com.cy.springannotation.controller;
 2 
 3 import javax.servlet.http.HttpServletRequest;
 4 
 5 import org.apache.log4j.Logger;
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.bind.annotation.RequestMethod;
 9 import org.springframework.web.bind.annotation.RequestParam;
10 import org.springframework.web.servlet.ModelAndView;
11 
12 import com.cy.springannotation.entity.UserBean;
13 
14 @Controller  // @Controller告知Spring容器这是一个控制器组件
15 public class LoginController {
16     
17     private Logger log=Logger.getLogger(this.getClass());
18     
19     
20     
21     /* @RequestMapping("/login.do")  // @RequestMapping告知该方法是针对/login.do请求的处理方法
22      public String login(String username){
23          System.out.println(username);
24         return "index";           // 返回的字符串被当做ViewName
25          
26      }*/
27     
28     /**
29      * 
30      * 1 、作用域对象
31      * HttpServletRequest,HttpServletResponse,HttpSession
32      * 个数顺序可以自行定义
33      * @param request
34      * @return
35      */
36 
37     /*@RequestMapping("/login.do") 
38     public ModelAndView login(HttpServletRequest request){
39         String username=request.getParameter("username");
40         String password=request.getParameter("password");
41         log.info(username);
42         log.info(password);
43         ModelAndView  mav=new ModelAndView();
44         mav.setViewName("index");
45         return mav;
46         
47     }*/
48     
49     /**
50      * 2、单个表单提交数据
51      */
52     
53     /*@RequestMapping("/login.do")
54     public String login(@RequestParam("username")String name,@RequestParam("password")String pwd){
55         log.info(name);
56         log.info(pwd);
57         return "index";
58     }*/
59 
60     
61     
62     
63     
64     /**method主要是制定请求方法的规则,比如:如果设置了RequestMethod.POST,
65      * 那么你的表单提交就必须使用POST提交,否则将报405错误 
66      params="password" 表示我的表单提交中,一定要有password这个参数,否则将报400的错误*/
67     
68     /**
69      * 2、单个表单提交数据
70      */
71     /*@RequestMapping(value="/login.do",method=RequestMethod.POST,params="password")
72     //如果属性名与提交项名称相同,可以不配置@RequestParam
73     public ModelAndView login(String username,String password){
74         log.info(username);
75         log.info(password);
76         ModelAndView mv = new ModelAndView();
77         mv.setViewName("index");
78         return mv;
79     }*/
80     
81     
82     /**
83      * 3 表单数据封装的Bean对象
84      * @param user
85      * @return
86      */
87     @RequestMapping(value="/login.do")
88     public String login(UserBean user){
89         log.info(user.getUsername());
90         log.info(user.getPassword());
91         return "index";
92     }
93     
94      
95      
96 }

 

 其他的配置都和前一篇是相同的。

 

 

4、Map对象
5、PrintWriter作为参数
6、Cookie中的数据作为参数
7、Http协议头的数据作为参数
8、从restful风格请求从获取数据

 

相关文章
|
7月前
|
缓存 监控 Java
《深入理解Spring》拦截器(Interceptor)——请求处理的艺术
Spring拦截器是Web开发中实现横切关注点的核心组件,基于AOP思想,可在请求处理前后执行日志记录、身份验证、权限控制等通用逻辑。相比Servlet过滤器,拦截器更贴近Spring容器,能访问Bean和上下文,适用于Controller级精细控制。通过实现`HandlerInterceptor`接口的`preHandle`、`postHandle`和`afterCompletion`方法,可灵活控制请求流程。结合配置类注册并设置路径匹配与执行顺序,实现高效复用与维护。常用于认证鉴权、性能监控、统一异常处理等场景,提升应用安全性与可维护性。
|
7月前
|
缓存 安全 Java
《深入理解Spring》过滤器(Filter)——Web请求的第一道防线
Servlet过滤器是Java Web核心组件,可在请求进入容器时进行预处理与响应后处理,适用于日志、认证、安全、跨域等全局性功能,具有比Spring拦截器更早的执行时机和更广的覆盖范围。
|
7月前
|
前端开发 Java 微服务
《深入理解Spring》:Spring、Spring MVC与Spring Boot的深度解析
Spring Framework是Java生态的基石,提供IoC、AOP等核心功能;Spring MVC基于其构建,实现Web层MVC架构;Spring Boot则通过自动配置和内嵌服务器,极大简化了开发与部署。三者层层演进,Spring Boot并非替代,而是对前者的高效封装与增强,适用于微服务与快速开发,而深入理解Spring Framework有助于更好驾驭整体技术栈。
|
10月前
|
前端开发 Java 数据库连接
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
SpringBoot参数校验底层原理和实操。深度历险、深度解析(图解+秒懂+史上最全)
|
10月前
|
前端开发 Java API
Spring Cloud Gateway Server Web MVC报错“Unsupported transfer encoding: chunked”解决
本文解析了Spring Cloud Gateway中出现“Unsupported transfer encoding: chunked”错误的原因,指出该问题源于Feign依赖的HTTP客户端与服务端的`chunked`传输编码不兼容,并提供了具体的解决方案。通过规范Feign客户端接口的返回类型,可有效避免该异常,提升系统兼容性与稳定性。
705 0
|
10月前
|
JSON 前端开发 Java
Spring MVC 核心组件与请求处理机制详解
本文解析了 Spring MVC 的核心组件及请求流程,核心组件包括 DispatcherServlet(中央调度)、HandlerMapping(URL 匹配处理器)、HandlerAdapter(执行处理器)、Handler(业务方法)、ViewResolver(视图解析),其中仅 Handler 需开发者实现。 详细描述了请求执行的 7 步流程:请求到达 DispatcherServlet 后,经映射器、适配器找到并执行处理器,再通过视图解析器渲染视图(前后端分离下视图解析可省略)。 介绍了拦截器的使用(实现 HandlerInterceptor 接口 + 配置类)及与过滤器的区别
986 0
|
10月前
|
SQL Java 数据库连接
Spring、SpringMVC 与 MyBatis 核心知识点解析
我梳理的这些内容,涵盖了 Spring、SpringMVC 和 MyBatis 的核心知识点。 在 Spring 中,我了解到 IOC 是控制反转,把对象控制权交容器;DI 是依赖注入,有三种实现方式。Bean 有五种作用域,单例 bean 的线程安全问题及自动装配方式也清晰了。事务基于数据库和 AOP,有失效场景和七种传播行为。AOP 是面向切面编程,动态代理有 JDK 和 CGLIB 两种。 SpringMVC 的 11 步执行流程我烂熟于心,还有那些常用注解的用法。 MyBatis 里,#{} 和 ${} 的区别很关键,获取主键、处理字段与属性名不匹配的方法也掌握了。多表查询、动态
306 0
|
10月前
|
JSON 前端开发 Java
第05课:Spring Boot中的MVC支持
第05课:Spring Boot中的MVC支持
399 0
|
缓存 安全 Java
深入解析HTTP请求方法:Spring Boot实战与最佳实践
这篇博客结合了HTTP规范、Spring Boot实现和实际工程经验,通过代码示例、对比表格和架构图等方式,系统性地讲解了不同HTTP方法的应用场景和最佳实践。
1102 5
|
存储 设计模式 前端开发
什么是SpringMVC?简单好理解!什么是应用分层?SpringMVC与应用分层的关系? 什么是三层架构?SpringMVC与三层架构的关系?
文章解释了SpringMVC的概念和各部分功能,探讨了应用分层的原因和具体实施的三层架构,以及SpringMVC与三层架构之间的关系和联系。
1053 1
什么是SpringMVC?简单好理解!什么是应用分层?SpringMVC与应用分层的关系? 什么是三层架构?SpringMVC与三层架构的关系?