@RequestMapping注解的五种用法
1 所有参数都在@RequestMapping注解中
1.1 代码展示
@RequestMapping ( value = "/login" , method = { RequestMethod . GET , RequestMethod . POST } ,
params = { "yhm" , "mm" } )
public String login1 ( String yhm, String mm) {
System . out. println ( "第一种写法" ) ;
System . out. println ( "用户名:" + yhm) ;
System . out. println ( "密码:" + mm) ;
return "index" ;
}
1.2 要点总结
a 所有的参数配置都写在@RequestMapping里头,
b params的参数列表需要与表单里面的name值对应的上
c 方法里面的形参名必须与params里面的参数列表保持一致,不然就会得不到数据,数据的结果就是null
1.3 运行截图
a 点击登录前
b.点击登录后
c 控制台输出信息
2 与@RequestParam结合一起用
2.1 代码展示
@RequestMapping ( value = "/login2" )
public String login2 ( @RequestParam ( "yhm" ) String yhm1, @RequestParam ( "mm" ) String mm1) {
System . out. println ( "第二种写法" ) ;
System . out. println ( "用户名:" + yhm1) ;
System . out. println ( "密码:" + mm1) ;
return "index" ;
}
2.2 要点总结
a @RequestMapping里面写访问的路径
b @RequestParam位于方法的形参前,且里面的值需要与name表单的值保持一致
c 这个可以自定义变量名,不用和表单里面的值保持一模一样
d 若你想要用户名没有也可以进入后续的操作,那么需要配置required=false,因为required=true是必须不为空,其例子如下所示
@RequestParam(value="yhm",required=false)
2.3 运行截图
a 点击登录前
b.点击登录后
c 控制台输出信息
3 HttpRequest的方式
3.1 在pom.xml中导入servlet依赖
< dependency>
< groupId> org.apache.tomcat</ groupId>
< artifactId> servlet-api</ artifactId>
< version> 6.0.53</ version>
</ dependency>
3.2 代码展示
@RequestMapping ( "login3" )
public String login3 ( HttpServletRequest request2) {
System . out. println ( "登录3" ) ;
String yhm = request2. getParameter ( "yhm" ) ;
String pwd = request2. getParameter ( "pwd" ) ;
System . out. println ( "用户名" + yhm) ;
System . out. println ( "密码:" + pwd) ;
return "index" ;
}
3.3 要点总结
a 导入servlet依赖的时候,一定要点击右侧的刷新按钮,没点的话,那HttpServletRequest可能提示不出来
b 这种写法就是我们之前servlet阶段常见的通过getParameter()获取值
3.4 运行截图
a 点击登录前
b.点击登录后
c 控制台输出信息
4 实体类的方式
4.1 在pom.xml里面导入lombok依赖
< dependency>
< groupId> org.projectlombok</ groupId>
< artifactId> lombok</ artifactId>
< version> 1.18.24</ version>
</ dependency>
4.2 创建实体类Users类
package entity ;
import lombok. AllArgsConstructor ;
import lombok. Data ;
import lombok. NoArgsConstructor ;
@AllArgsConstructor
@NoArgsConstructor
@Data
public class Users {
private Integer id;
private String yhm;
private String pwd;
}
4.3 代码展示
@RequestMapping ( "login4" )
public String login4 ( Users u) {
System . out. println ( "登录4" ) ;
System . out. println ( "用户名" + u. getYhm ( ) ) ;
System . out. println ( "密码:" + u. getPwd ( ) ) ;
return "index" ;
}
4.4 要点总结
a 需要导入lombok依赖,因为是通过lombok的插件创建实体类Users
b 使用实体类的方式时,要求实体类必须有set方法,因为是通过set方法进行注入对象的(@Data会自动生成属性的get和set方法)
c 这里要求实体类的属性和表单里面的name值保持一致
d 如果表单里面没有的属性,但是实体类有,那么该属性的值就为null(引用数据类型未赋值时默认都是null)
4.5 运行截图
a 点击登录前
b.点击登录后
c 控制台输出信息
5 地址/{id值}
5.1 代码展示
@RequestMapping ( { "del/{id}" , "del/{id}/{name}" } )
public String del ( @PathVariable ( "id" ) Integer id, @PathVariable ( required = false ) String name) {
System . out. println ( "删除用户id" + id) ;
System . out. println ( "删除用户name" + name) ;
return "index" ;
}
5.2 要点总结
a del/{id值}的这种形式就是把需要提交的信息放在访问地址栏/后面
b del/1234这种形式在后台只能通过@PathVariable注解的方式获取
c del/{id}或者del/{id}/{name}这两个地址都是可以访问del方法的
d required = false是确保del/{id}方式访问地址的时候,可以通过,如果不写就会出现405错误
5.3 运行截图
5.3.1 del/{id值}
a 访问前
b.访问后
c 控制台输出信息
5.3.2 del/{id值}/{name}
a 访问前
b.访问后
c 控制台输出信息