1.@RequestMapping 用法
SpringMVC中,@RequestMapping用来处理请求,比如XXX.do
Java代码 收藏代码
@RequestMapping("/aaa")//类级别,可以不需要,如果要了,下面所有的请求路径前都需要加入 /aaa
public class ccccontroller{
@RequestMapping("/bbb")//方法级别,必须有,决定这个方法处理哪个请求,如果有类级别 /aaa/bbb
public String xxx()
{
//如果没有类级别的就直接请求/bbb
return;
}
}
2:接收带参数的请求,接收用户请求参数 值
请求1: /test/start.do?name=zhangsan
请求2: /test/start/zhangsan.do
在请求2中 将参数作为请求URL传递,感觉用的不习惯
采用 URL模板
@RequestMapping("/start/{name}")//这个name 随便 啥都可以
Java代码 收藏代码
public String start(@PathVariable("name") string name){ //和上面的对应
return ;//方法体里面就可以直接获得参数
}
包含多个 @RequestMapping ("/start/{name}/{age}")
3不同请求方法,用不同处理方法 get post
@RequestMapping (value="/start" ,method=RequestMethod.GET)//处理post 就换成 POST
另外,如果Servlet想要做到/test/start/zhangsan.do这种请求的话
需要 URL 重写才能做到,或者用 /start/* 作为 Servlet 请求控制器,在其中进行截取和判断。
第二种方法:自己写一个 URL 重写的 Filter
第三种方法:使用现成的 urlrewriter 工具
第四种方法:使用 Web 服务器的 URL 重写功能
Servlet中用Filter重写示例
web.xml中:
Xml代码 收藏代码
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns=" http://java.sun.com/xml/ns/j2ee"
xmlns:xsi=" http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=" http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<servlet-name>Action</servlet-name>
<servlet-class>com.bao.servlet.Action</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Action</servlet-name>
<url-pattern>/Action</url-pattern>
</servlet-mapping>
<filter>
<filter-name>action_name</filter-name>
<filter-class>com.bao.filter.ActionNameFilter</filter-class>
<init-param>
<param-name>pattern</param-name>
<param-value>/action/[^/]+</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>action_name</filter-name>
<url-pattern>/action/*</url-pattern>
</filter-mapping>
</web-app>
Filter中:
Java代码 收藏代码
private Matcher matcher;
Matcher 不是线程安全的,所以这样写是错误的。改正一下:
package com.bao.filter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
public class ActionNameFilter implements Filter {
private Pattern pattern;
public void init(FilterConfig config) throws ServletException {
String p = config.getInitParameter("pattern");
pattern= Pattern.compile(p);
}
public void doFilter(ServletRequest req, ServletResponse res,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
String context = request.getContextPath();
String uri = request.getRequestURI();
// 去掉 URI 中的 context path
String path = uri.substring(context.length());
if(pattern.matcher(path).matches()) {
// 如果 URI path 符合配置中的模式,则重新转发
int idx = uri.lastIndexOf("/");
String name = uri.substring(idx + 1);
request.getRequestDispatcher("/Action?username=" + name).forward(req, res);
} else {
// 不符合的话做该做的事情
chain.doFilter(req, res);
}
}
public void destroy() {
}
}
分享到:
相关推荐
在同一个方法上可以使用多个`@RequestMapping`,这样可以同时处理多个不同的URL请求。例如: ```java @RequestMapping(value = {"/get/{id}", "/getById"}, method = RequestMethod.GET) public User getUser(@...
在Spring MVC框架中,`@RequestMapping` 和 `@RequestParam` 是两个非常重要的注解,它们在处理HTTP请求和参数绑定方面起着核心作用。本文将深入探讨这两个注解的使用和功能。 `@RequestMapping` 是Spring MVC用于...
在Spring MVC框架中,`@RequestMapping`、`@RequestParam`和`@PathVariable`是三个非常重要的注解,它们用于处理HTTP请求并绑定请求参数到控制器方法的参数上。接下来,我们将详细探讨这三个注解的工作原理以及如何...
总结起来,`@RequestMapping`是Spring MVC中实现请求映射的关键工具,它允许开发者灵活地根据URL、请求方法、参数和头信息来映射处理逻辑。而`HiddenHttpMethodFilter`则解决了在非RESTful环境中模拟其他HTTP方法的...
通过这个简单的`springmvc_helloworld`示例,你可以了解`@RequestMapping`注解的基本用法,以及如何在Spring MVC框架下构建一个基本的Web应用。随着对Spring MVC的深入学习,你会发现更多高级特性,如拦截器、异常...
在表单提交场景中,它可以将多个参数组合成一个对象。 ```java @PostMapping("/users") public String createUser(@ModelAttribute User user) { // ... } ``` 7. `@ResponseBody` 和 `@RestController` 注解:`@...
- B) 路径变量:如`/{ownerId}`,`ownerId`可以在请求中变化,这允许处理多个具有相同结构但参数不同的请求。 - C) 正则表达式:虽然Spring MVC并不直接支持正则表达式,但可以通过自定义拦截器或者使用Spring ...
1. 类级别的`@RequestMapping`:这个注解用于将一类请求映射到一个控制器类,通常是处理相同类型请求的类。例如,你可以将所有的URL路径前缀都设置为同一个值,这样所有类中的方法都可以处理这类请求。 2. 方法级别...
Spring MVC、Spring 和 MyBatis 是Java开发中常用的三大框架,它们各自负责应用程序的不同层面:Spring MVC 处理Web请求,Spring 提供依赖注入和事务管理,而MyBatis 则是持久层框架,用于数据库操作。这个整合项目...
使用 Spring 2.5 基于注解驱动的 Spring MVC 详解 本文将介绍 Spring 2.5 新增的 Spring MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 Spring MVC 注解驱动 在 Spring 2.5 中,...
"SpringMvc+Spring+Mybatis+Maven+注解方式"是一个经典的Java后端技术栈,它整合了四个关键组件,为开发人员提供了强大的工具和框架支持。下面将详细讲解这四个组件及其整合方式。 1. **Spring Framework**: ...
在提供的压缩包文件`springMVC`中,你可以找到一个实际的Spring MVC项目,其中包含了上述注解的使用。通过阅读源代码,你可以更深入地理解这些注解如何协同工作,以构建一个完整的Web应用程序。学习和实践这个例子将...
- **`@RequestMapping`**: 这个注解是Spring MVC中的核心注解之一,主要用于建立请求与处理方法之间的映射关系。它可以应用在类级别或者方法级别,用于指定Controller类或方法处理的具体URL路径。 #### 如何使用...
在 SPRING MVC 中,也可以使用 @RequestParam 注解来绑定请求参数。例如: ```java @RequestMapping(value = "/requestParam", method = RequestMethod.GET) public String setupForm(@RequestParam("a") String a, ...
2. 如何创建Spring MVC的Controller,以及使用注解进行请求映射和参数绑定。 3. Spring的依赖注入和AOP的使用,包括@Autowired、@Service、@Repository和@Transactional。 4. Hibernate的配置和实体类的注解,以及...
Spring MVC通过DispatcherServlet处理HTTP请求,通过@Controller注解标记控制器类,@RequestMapping注解定义URL映射,使代码更简洁、可读性更强。 2. **MyBatis**:MyBatis是一个持久层框架,它简化了Java应用与...
使用方法直接下载导入到...LoginController类中方法login.do、login2.do、login3.do、login4.do、login5.do、login6.do、login7.do、login8.do、login9.do相应的@RequestMapping("/****.do")这三个都是获取页面传参,
除了`@RequestMapping`,Spring MVC 3还提供了其他丰富的注解,如`@RequestParam`用于从请求参数中获取值,`@PathVariable`用于获取URL模板变量的值,`@ModelAttribute`用于绑定模型属性,以及`@ExceptionHandler`...
@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是 SpringMVC 的一个控制器类,因为这个时候 Spring...
Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...