1.@RequestMapping 用法
SpringMVC中,@RequestMapping用来处理请求,比如XXX.do
@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 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>
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() {
}
}
分享到:
相关推荐
Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...
在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。...在Springmvc02这个项目中,你可以找到更多关于这些注解的实际应用示例,通过学习和实践,将有助于深入理解Spring MVC的注解驱动开发模式。
在这个“最全的Spring MVC注解例子”中,我们将深入探讨Spring MVC的核心注解,以及如何实现异步请求处理和错误管理。 1. **Spring MVC核心注解** - `@Controller`:标记一个类为处理HTTP请求的控制器。这是Spring...
为了使Spring MVC能够识别并处理这些注解,你需要在`DispatcherServlet`的配置中包含`DefaultAnnotationHandlerMapping`和`AnnotationMethodHandlerAdapter`。这两个组件是Spring MVC框架的核心部分,它们负责映射...
注解在Spring MVC中扮演着核心角色,它们提供了声明式编程,使得开发者能够以更简洁的方式配置和控制应用程序的行为。 1. **@Controller**:这个注解标记一个类作为Spring MVC的控制器。控制器类处理来自客户端的...
在Spring MVC中,注解简化了配置文件,使得开发者可以直接在控制器类和方法上使用注解来声明路由、参数绑定和异常处理等。主要的注解有: 1. `@Controller`:标记一个类为控制器类,处理来自HTTP请求的方法。 2. `@...
非注解测试在Spring MVC中是指不依赖于Java注解如`@Test`,`@Controller`等进行的测试,而是通过XML配置文件来定义组件和它们之间的关系。这种方式虽然比注解方式繁琐,但有助于理解Spring MVC的工作原理。 首先,...
这里,@PathVariable注解使得URL中的"id"值可以直接赋给方法参数。 4. **模型数据与视图** 使用@ModelAttribute注解可以将方法的返回值自动添加到Model中,便于传递到视图。视图解析通常通过ViewResolver完成,...
在Spring MVC中,常见的注解有`@Controller`、`@RequestMapping`、`@GetMapping`、`@PostMapping`等,它们分别用于定义控制器类和处理HTTP请求的方法。例如,`@Controller`标识一个类作为Spring MVC的控制器,而`@...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第12部分,将帮助开发者掌握如何在Java Web项目中高效地集成这三个核心框架,实现松耦合、可...
拦截器是Spring MVC中的另一个重要概念,它允许我们在请求处理前后执行自定义逻辑。 首先,让我们关注Spring MVC的核心注解: 1. `@Controller`:这个注解用于标记一个类作为Spring MVC的控制器。控制器负责接收...
Spring MVC 是一个强大的Java Web开发框架,用于...在提供的链接文章"spring mvc 注解实现"中,你应该能发现更多关于如何实际应用这些注解的例子和详细解释。学习和理解这些注解对于提升Spring MVC的开发效率至关重要。
使用 Spring 2.5 基于注解驱动的 Spring MVC 详解 ...Spring 2.5 中的注解驱动功能使得 Spring MVC 框架变得更加灵活和易用。使用注解驱动功能,可以完全替换传统的基于 XML 的配置方式,使得配置变得更加简单和灵活。
在“基于注解的Spring MVC环境搭建”中,我们将深入探讨如何利用注解来简化配置,快速建立一个运行中的Web项目。这篇博文(尽管描述为空,但提供了链接)很可能是关于创建一个基本的Spring MVC项目并使用注解来管理...
Spring MVC 是一个强大的Java web开发框架,用于构建高效、可维护和模块化的Web应用程序。...通过这个实例,开发者可以深入理解Spring MVC的请求处理机制和Hibernate的ORM功能,为实际项目开发打下坚实基础。
在Spring MVC中,我们可以使用@RequestBody注解来处理请求参数,并使用 EncryptUtils 工具类来进行加密和解密。EncryptUtils 工具类提供了sha()方法来生成签名,createAesCipher()方法来创建AES加密器。 在控制器...
在Spring MVC中,你可以创建一个类,并使用`@Controller`注解,然后在类的方法上使用`@RequestMapping`或其变体(如`@GetMapping`, `@PostMapping`等)来指定处理特定HTTP请求的方法。 3. **模型(Model)**: - ...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一部分,专为构建 MVC...通过研究和运行这个项目,你可以更好地理解 Spring MVC 如何处理 Web 请求,以及如何通过注解实现 MVC 架构的各个部分。
另外,Spring MVC还提供了许多其他注解,如`@RequestParam`用于从请求参数中获取值,`@ModelAttribute`用于绑定表单数据到模型对象,`@ResponseBody`用于直接将方法返回值转换为HTTP响应体等。 学习Spring时,了解...
在本教程中,我们将深入探讨如何使用Spring MVC、Spring和Hibernate三大框架进行全注解的整合开发。这个视频教程系列的第11部分,重点可能是建立在前几部分的基础之上,进一步深化对这三个核心技术的理解和实践。 ...