springMVC注解

1.加入注解包:

com.springsource.javax.annotation-1.0.0.jar

2.注解驱动和扫描

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    <context:annotation-config></context:annotation-config> <context:component-scan
        base-package="cn.itcast.springmvc.controller.anotation"/>
    <!-- 试图解析器 -->
    <bean id="myViewResolver"
        class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

3.Controller加注解:

(1).在控制器类上加@Controller

(2).在控制器类上加RequestMapping(value="/名称"),此步骤可选

(3).方法的返回值可以是String,void,Map,ModelAndView,Model,List,Set,Object

  String:跳转的视图是返回字符串拼接视图解析器的前缀,后缀,得到的视图,如果方法上有@ResponseBody,则字符串作为返回值,做为response对象的相应内容,返回给客户端

  void:跳转视图为空

  Map:跳转的视图是URL拼接视图解析器配置的前缀,后缀,得到的视图,Map值会放到request中

  ModelAndView:按创建ModelAndView中的参数跳转视图

  Model:Model类继承ModelMap,同Map

  List:同Map跳转视图,返回值作为request域属性,属性名称为类型首字母小写加List,如stringList,userList

  Set:同List

  Object:同Map

注意:视图名称字符串可以是"redirect:...","forward:..."

@Controller
public class MyAnotationController {
     public MyAnotationController() {
        System.out.println("构造方法执行......");
    }
@RequestMapping(value="/user")
    public ModelAndView user(HttpServletRequest req,ModelMap map){
// req.setAttribute("name", "123");
    System.out.println(".........................user method");
    String name = (String) map.get("name");
    return new ModelAndView("ok","name","111");
    }
@RequestMapping(value="/user2")
@ResponseBody
public String user2(HttpServletRequest req,ModelMap map){
return "hello world";
}
@RequestMapping(value="/ok")
public void user3(HttpServletRequest req,ModelMap map){
String name = req.getParameter("name");
System.out.println(name);
req.setAttribute("name",name);
}

1.参数读取

(1).可变参数,可以在方法参数中自定义参数类型,如HttpServletRequest,HttpServletResponse,String,Object,Map等

(2).参数中还可以设置,Model,Map,作为request内容,在页面中取值,Object对象不可以作为request域中的内容,只能作为参数,即模型驱动,List,Set也不可以作为参数,也不可以作为模型驱动,只能做返回值

 

其他注解:

1.@PathVariable:用于地址栏使用{xxx}模板变量时使用,如果地址栏没有使用模板变量,则会不报错。即

@RequestMapping(value="/user/{userId}")

public String user(@PathVariable("userId") String number){}

2. @RequestParam:用于指定参数在地址栏的名称,如果参数类型为int,float,long等基本数据类型,则地址栏必须给出参数,否则会报错org.springframework.web.util.NestedServletException

  @RequestParam(required=,value="",defaultValue="")

  required:参数是否必须,boolean类型,默认true

  value:参数名称(地址栏),String类型

     defaultValue:String类型,没有参数时地址栏,设置默认值

3.@ModelAttribute:相当于request.setAttribute(),@ModelAttribute应用于方法参数时必须关联到Object类型,基本数据类型不起作用,如int,String

@ModelAttribute("items")//<——①向模型对象中添加一个名为items的
属性 
public List<String> populateItems() { 
        List<String> lists = new ArrayList<String>(); 
        lists.add("item1"); 
        lists.add("item2"); 
        return lists; 

@RequestMapping(params = "method=listAllBoard") 
public String listAllBoard(@ModelAttribute("currUser")User user,
ModelMap model) { 
        bbtForumService.getAllBoard(); 
        //<——②在此访问模型中的items属性 
        System.out.println("model.items:" + ((List<String>)

model.get("items")).size()); 
        return "listBoard"; 
}
@ResponseBody:直接加在方法上,返回类型直接作为HTTP相应字节流输出,不被放置在Model,也不被拦截为视图页面名称,可用于ajax

@SessionAttributes

@CookieValue

@RequestHeader

注意:@RequestMapping如果在控制器类上映射URL为.do,.html等,则方法上不能再映射URL,否则会报错,可以映射params等参数

 

 

 

 

 

 

@ResponseBody
这个注解可以直接放在方法上,表示返回类型将会直接作为HTTP响应字节

流输出(不被放置在Model,也不被拦截为视图页面名称)。可以用于ajax。

posted @ 2015-12-05 23:18  Runny_Hao  阅读(81)  评论(0)    收藏  举报