`
yangshubao
  • 浏览: 4164 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
最近访客 更多访客>>
社区版块
存档分类
最新评论

SpringMVC Spring3 MVC 注解,注释 用@RequestMapping处理请求,多个请求,提交,.do,带参数,url重写

 
阅读更多
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() { 
         
    } 
分享到:
评论

相关推荐

    Spring MVC--2.@RequestMapping 映射请求

    在同一个方法上可以使用多个`@RequestMapping`,这样可以同时处理多个不同的URL请求。例如: ```java @RequestMapping(value = {"/get/{id}", "/getById"}, method = RequestMethod.GET) public User getUser(@...

    springmvc关于@requestMapping和@requestParam的使用

    在Spring MVC框架中,`@RequestMapping` 和 `@RequestParam` 是两个非常重要的注解,它们在处理HTTP请求和参数绑定方面起着核心作用。本文将深入探讨这两个注解的使用和功能。 `@RequestMapping` 是Spring MVC用于...

    SpringMVC@RequestMapping(重点)@RequestParam@PathVariable示例

    在Spring MVC框架中,`@RequestMapping`、`@RequestParam`和`@PathVariable`是三个非常重要的注解,它们用于处理HTTP请求并绑定请求参数到控制器方法的参数上。接下来,我们将详细探讨这三个注解的工作原理以及如何...

    SpringMVC-2 使用@RequestMapping映射请求

    总结起来,`@RequestMapping`是Spring MVC中实现请求映射的关键工具,它允许开发者灵活地根据URL、请求方法、参数和头信息来映射处理逻辑。而`HiddenHttpMethodFilter`则解决了在非RESTful环境中模拟其他HTTP方法的...

    springmvc之@RequestMapping的demo

    通过这个简单的`springmvc_helloworld`示例,你可以了解`@RequestMapping`注解的基本用法,以及如何在Spring MVC框架下构建一个基本的Web应用。随着对Spring MVC的深入学习,你会发现更多高级特性,如拦截器、异常...

    Spring MVC 的注解使用实例

    在表单提交场景中,它可以将多个参数组合成一个对象。 ```java @PostMapping("/users") public String createUser(@ModelAttribute User user) { // ... } ``` 7. `@ResponseBody` 和 `@RestController` 注解:`@...

    Springmvc中 RequestMapping 属性用法归纳.docx

    - B) 路径变量:如`/{ownerId}`,`ownerId`可以在请求中变化,这允许处理多个具有相同结构但参数不同的请求。 - C) 正则表达式:虽然Spring MVC并不直接支持正则表达式,但可以通过自定义拦截器或者使用Spring ...

    Spring3.0MVC注解(附实例)

    1. 类级别的`@RequestMapping`:这个注解用于将一类请求映射到一个控制器类,通常是处理相同类型请求的类。例如,你可以将所有的URL路径前缀都设置为同一个值,这样所有类中的方法都可以处理这类请求。 2. 方法级别...

    springmvc3+spring+mybatis3整合项目 注解实现

    Spring MVC、Spring 和 MyBatis 是Java开发中常用的三大框架,它们各自负责应用程序的不同层面:Spring MVC 处理Web请求,Spring 提供依赖注入和事务管理,而MyBatis 则是持久层框架,用于数据库操作。这个整合项目...

    使用Spring 2.5 基于注解驱动的 Spring MVC详解

    使用 Spring 2.5 基于注解驱动的 Spring MVC 详解 本文将介绍 Spring 2.5 新增的 Spring MVC 注解功能,讲述如何使用注解配置替换传统的基于 XML 的 Spring MVC 配置。 Spring MVC 注解驱动 在 Spring 2.5 中,...

    SpringMvc+Spring+Mybatis+Maven+注解方式=整合

    "SpringMvc+Spring+Mybatis+Maven+注解方式"是一个经典的Java后端技术栈,它整合了四个关键组件,为开发人员提供了强大的工具和框架支持。下面将详细讲解这四个组件及其整合方式。 1. **Spring Framework**: ...

    spring MVC 注解的使用例子

    在提供的压缩包文件`springMVC`中,你可以找到一个实际的Spring MVC项目,其中包含了上述注解的使用。通过阅读源代码,你可以更深入地理解这些注解如何协同工作,以构建一个完整的Web应用程序。学习和实践这个例子将...

    Spring2.5_基于注解驱动的SpringMVC

    - **`@RequestMapping`**: 这个注解是Spring MVC中的核心注解之一,主要用于建立请求与处理方法之间的映射关系。它可以应用在类级别或者方法级别,用于指定Controller类或方法处理的具体URL路径。 #### 如何使用...

    SPRING MVC 的请求参数获取的几种方法

    在 SPRING MVC 中,也可以使用 @RequestParam 注解来绑定请求参数。例如: ```java @RequestMapping(value = "/requestParam", method = RequestMethod.GET) public String setupForm(@RequestParam("a") String a, ...

    spring mvc + spring + hibernate 全注解整合开发视频教程 12

    2. 如何创建Spring MVC的Controller,以及使用注解进行请求映射和参数绑定。 3. Spring的依赖注入和AOP的使用,包括@Autowired、@Service、@Repository和@Transactional。 4. Hibernate的配置和实体类的注解,以及...

    springmvc+mybatis+spring注解

    Spring MVC通过DispatcherServlet处理HTTP请求,通过@Controller注解标记控制器类,@RequestMapping注解定义URL映射,使代码更简洁、可读性更强。 2. **MyBatis**:MyBatis是一个持久层框架,它简化了Java应用与...

    springmvc02.zip

    使用方法直接下载导入到...LoginController类中方法login.do、login2.do、login3.do、login4.do、login5.do、login6.do、login7.do、login8.do、login9.do相应的@RequestMapping("/****.do")这三个都是获取页面传参,

    Spring mvc 3 注解精华.docx

    除了`@RequestMapping`,Spring MVC 3还提供了其他丰富的注解,如`@RequestParam`用于从请求参数中获取值,`@PathVariable`用于获取URL模板变量的值,`@ModelAttribute`用于绑定模型属性,以及`@ExceptionHandler`...

    springmvc常用注解标签详解

    @Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。单单使用@Controller 标记在一个类上还不能真正意义上的说它就是 SpringMVC 的一个控制器类,因为这个时候 Spring...

    Spring MVC 基于注解实例

    Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于注解实例Spring MVC 基于...

Global site tag (gtag.js) - Google Analytics