(三)springmvc之注解的基本使用

一、@Controller

  • @Controller 标记一个类是Controller

二、RequestMapping  地址映射

  • 2.1  Value的操作。

注解在类上面    (父)
                注解在方法上面。 (子)

  • 2.1.1 SpringMVC完整的请求,就是父子加请来的请求。

        <a href="<%=request.getContextPath()%>/userController/list">list方法</a>
        <a href="<%=request.getContextPath()%>/userController/save">save方法</a>

controller:

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/userController")
public class UserController {
    @RequestMapping(value = "/list")
    public ModelAndView list(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        System.out.println("r执行list方法");

        ModelAndView mv = new ModelAndView();
        mv.addObject("req_key", "Model Data");
        mv.setViewName("succ");
        return mv;
    }

    @RequestMapping(value = "/save")
    public ModelAndView save(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        System.out.println("r执行save方法");

        ModelAndView mv = new ModelAndView();
        mv.addObject("req_key", "Model Data");
        mv.setViewName("succ");
        return mv;
    }

}
  • 2.2   用于映射请求中的参数。

        <a href="<%=request.getContextPath()%>/paramController?task=list">list方法</a>
        <a href="<%=request.getContextPath()%>/paramController?task=save">save方法</a>    

controller:

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/paramController")
public class ParamController {
    @RequestMapping(params = "task=list")
    public ModelAndView list(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        System.out.println("r执行list方法");

        ModelAndView mv = new ModelAndView();
        mv.addObject("req_key", "Model Data");
        mv.setViewName("succ");
        return mv;
    }

    @RequestMapping(params = "task=save")
    public ModelAndView save(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        System.out.println("r执行save方法");

        ModelAndView mv = new ModelAndView();
        mv.addObject("req_key", "Model Data");
        mv.setViewName("succ");
        return mv;
    }

}
  •   2.3  Method:表示是处理哪一种请求.GET/POST

     <a href="<%=request.getContextPath()%>/methodController/add">list方法</a>

        <form method="post" action="<%=request.getContextPath()%>/methodController/add">
            <input type="submit" value="提交"/>
        </form>

controller:

package com.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/methodController")
public class MethodController {

    @RequestMapping(value = "/add", method = RequestMethod.GET)
    public ModelAndView add(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        System.out.println("处理GET请求");

        ModelAndView mv = new ModelAndView();
        mv.addObject("req_key", "Model Data");
        mv.setViewName("succ");
        return mv;
    }

    @RequestMapping(value = "/add", method = RequestMethod.POST)
    // @RequestMapping(value = "/add", method = { RequestMethod.GET,
    // RequestMethod.POST })
    public ModelAndView save(HttpServletRequest request,
            HttpServletResponse response) throws Exception {

        System.out.println("处理POST请求");

        ModelAndView mv = new ModelAndView();
        mv.addObject("req_key", "Model Data");
        mv.setViewName("succ");
        return mv;
    }

}
  •   2.4  RequestParam:获取地址中的参数信息。

    <a href="<%=request.getContextPath()%>/requestParamController/edit?userid=1">list方法</a>
    <a href="<%=request.getContextPath()%>/requestParamController?task=edit&userid=2">list方法</a>

controller

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/requestParamController")
public class RequestParamController {

    @RequestMapping(value = "/edit", method = RequestMethod.GET)
    public ModelAndView edit_1(
            @RequestParam(name = "userid", required = false) String id)
            throws Exception {

        System.out.println("userid = " + id);

        return null;
    }

    @RequestMapping(params = "task=edit", method = RequestMethod.GET)
    public ModelAndView edit_2(String userid) throws Exception {

        System.out.println("task=edit中的userid = " + userid);

        return null;
    }

}
  •   2.5  PathVariable:REST风格.

    <a href="<%=request.getContextPath()%>/pathVarController/edit/1/admin">edit方法</a>
    <a href="<%=request.getContextPath()%>/pathVarController/edit/2/guest">edit方法</a>
    <a href="<%=request.getContextPath()%>/pathVarController/edit/3/test">edit方法</a>

<a href="<%=request.getContextPath()%>/pathVarController/3/admin/delete">通配符一个方法</a>
<a href="<%=request.getContextPath()%>/pathVarController/3/admin/test/xxxx/yyyy/remove">通配符多个方法</a>

  controller

package com.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/pathVarController")
public class PathVarController {

    @RequestMapping(value = "/edit/{userid}/{username}", method = RequestMethod.GET)
    public ModelAndView edit_1(@PathVariable(value = "userid") String userid,
            @PathVariable(value = "username") String username) throws Exception {

        System.out.println("userid = " + userid);
        System.out.println("username = " + username);

        return null;
    }

    /**
     * 通配符的写法
     *
     * 1个*代表通配一个地址
     *
     * 2个*代表通配多个地址
     */
    @RequestMapping(value = "{userid}/*/delete", method = RequestMethod.GET)
    public ModelAndView delete_1(@PathVariable(value = "userid") String userid)
            throws Exception {

        System.out.println("delete_1====>userid = " + userid);

        return null;
    }

    @RequestMapping(value = "{userid}/**/remove", method = RequestMethod.GET)
    public ModelAndView delete_2(@PathVariable(value = "userid") String userid)
            throws Exception {

        System.out.println("remove_2====>userid = " + userid);

        return null;
    }
}

  2.6  header和cookie

<a href="<%=request.getContextPath()%>/headerController/header">header</a>

<a href="<%=request.getContextPath()%>/headerController/cookie">cookie</a>

controller

package com.shyroke.controller;

import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.CookieValue;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestHeader;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;

@Controller
@RequestMapping(value = "/headerController")
public class HeaderController {

    @RequestMapping(value = "/header", method = RequestMethod.GET)
    public ModelAndView header(@RequestHeader(name = "Host") String Host,
            @RequestHeader(name = "User-Agent") String agent,

            HttpServletRequest request, HttpServletResponse response)
            throws Exception {
        System.out.println("header");
        System.out.println("Host= " + Host);
        System.out.println("agent= " + agent);

        System.out.println("RequestHeader = " + request.getHeader("Host"));

        Cookie cookie_a = new Cookie("cookie_a", "Admin/GTUeST/axxxx");

        cookie_a.setPath("/");
        response.addCookie(cookie_a);
        return null;
    }

    @RequestMapping(value = "/cookie", method = RequestMethod.GET)
    public ModelAndView cookie(
            @CookieValue(name = "JSESSIONID", required = false) String sessionID,
            @CookieValue(name = "cookie_a", required = false) String cookie_a)
            throws Exception {
        System.out.println("cookie_1 = " + sessionID);

        System.out.println("cookie_a = " + cookie_a);

        return null;
    }

}

结果

时间: 2024-11-01 19:26:01

(三)springmvc之注解的基本使用的相关文章

04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s

 1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2  spring-mvc结构 DispatcherServlet:中央控制器,把请求给转发到具体的控制类 Controller:具体处理请求的控制器(配置文件方式需要配置,注解方式不用配置) handlerMapping:映射处理器,负责映射中央处理器转发给controller时的映射策略 ModelAndView:服务

springMvc的注解注入方式

springMvc的注解注入方式 最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着学习的态度来阅读源码,若文章在表述和代码方面如有不妥之处,欢迎批评指正.留下你的脚印,欢迎评论!希望能互相学习. 1,首先定义三个常用的注解Service,Autowired,Contrller:(主要的解释都在代码中有,在这里就不多陈述) Service: package com.lishun.A

springMVC的注解详解

springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示.在SpringMVC 中提供了一个非常简便的定义Controller 的方法,你无需继承特定的类或实现特定的接口,只需使用@Controller 标记一个类是Controller ,然后使用@Request

Spring和SpringMVC常用注解(转)

作者:IT_faquir 原文:https://blog.csdn.net/IT_faquir/article/details/78025203 个人学习所用,如有侵权,请联系删除! --------------------- 本文主要罗列Spring|SpringMVC相关注解的简介.Spring部分1.声明bean的注解 @Component 组件,没有明确的角色 @Service 在业务逻辑层使用(service层) @Repository 在数据访问层使用(dao层) @Controll

SpringMVC的注解方式

mvc-servlet.xml <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springf

Annotation(三)——Spring注解开发

Spring框架的核心功能IoC(Inversion of Control),也就是通过Spring容器进行对象的管理,以及对象之间组合关系的映射.通常情况下我们会在xml配置文件中进行action,service,dao等层的声明,然后并告知框架我们想要的注入方式,然后在类中声明要组合类的get,set方法.而通过Spring框架中注解的运用也就主要是解决这类问题的.而框架中另一个核心知识AOP,一种面向横切面的方法编程,在程序中一般都是进行一次设置就可以的,所以都还放在配置文件中.例如声明式

springMVC基于注解的控制器

springMVC基于注解的控制器的优点有两个: 1.控制器可以处理多个动作,这就允许将相关操作写在一个类中. 2.控制器的请求映射不需要存储在配置文件中.使用requestMapping注释类型,可以对一个方法进行请求处理. 接下来介绍两个最重要的注释类型: 一.controller注释类型 这种注释类型用于指示Spring类的实例是一个实例: import org.springframework.stereotype; public class CustemerController{ //m

(原)SpringMVC全注解不是你们那么玩的

前言:忙了段时间,忙得要死要活,累了一段时间,累得死去活来. 偶尔看到很多零注解配置SpringMVC,其实没有根本的零注解. 1)工程图一张: web.xml在servlet3.0里面已经被注解完全替代,但是spring里面的DispatcherServlet并没有被使用,本打算修改下源码弄成3.0的,奈何没啥时间. 这是一个标准的SpringMVC,重点是AppConfig与DBConfig,在Web.xml里面申明两个类的配置路径: <servlet> <servlet-name&

将 Shiro 作为应用的权限基础 三:基于注解实现的授权认证过程

授权即访问控制,它将判断用户在应用程序中对资源是否拥有相应的访问权限. 如,判断一个用户有查看页面的权限,编辑数据的权限,拥有某一按钮的权限等等. 一.用户权限模型 为实现一个较为灵活的用户权限数据模型,通常把用户信息单独用一个实体表示,用户权限信息用两个实体表示. 用户信息用 LoginAccount 表示,最简单的用户信息可能只包含用户名 loginName 及密码 password 两个属性.实际应用中可能会包含用户是否被禁用,用户信息是否过期等信息. 用户权限信息用 Role 与 Per

Spring及SpringMvc常用注解

一.Spring 常用注解 1.1  组件类的注解 @Component:一个Spring的bean上的注解,Component泛指组件,当组件不好归类的时候,我们可以使用这个注解进行标注. @Repository :持久层DAO的注解,用来标注持久层. @Service :业务逻辑层的注解,注入DAO @Controller:用于标注控制层,注入服务 <context:component-scan base-package="xx"> 这个xml配置会扫描以上注解配置的类