一,SpringMVC常用配置
1.springmvc默认加载的配置文件是WEB-INF下的springmvc-servlet.xml,而我们通常将配置文件放在项目的资源目录中,即classpath下,因此需要配置springmvc加载的配置文件地址。
将配置文件转移至resources中,改名,并修改web.xml:

springmvc
org.springframework.web.servlet.DispatcherServlet

contextConfigLocation
classpath:spring-web.xml



springmvc
/

2.上面的配置中所应用的处理器映射器、处理器适配器以及视图解析器都是默认的,可以修改为注解的使用方式。
在springmvc的配置文件中添加配置:

    <!--注解方式的处理器适配器-->
    <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"/>

    <!--视图解析器 
        通过逻辑视图:index
        视图解析器解析逻辑视图(解析出物理视图):prefix(前缀)+逻辑视图+suffix(后缀)
        解析物理视图:/index.jsp -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

注:注解方式的处理器映射器和处理器适配器的配置可以合并为一个配置:
    <mvc:annotation-driven/>

3.在注解方式的配置下,controller的写法将变得非常简单:
@Controller
public class TestController {
@RequestMapping("/test1") // 为该方法配置访问路径
public String test1() {
System.out.println("Hello,SpringMVC!");
return "index";
}
@RequestMapping("/test2")
public String test2() {
System.out.println("Hello,test2!");
return "index";
} }
二,Controller中方法的参数
Controller中方法的参数列表,功能非常强大,主要功能有以下两点:
1.接收请求参数; 2.获取servletAPI

1.接收请求参数
写一个用户登录的方法:
// 简单类型的参数,springmvc可以直接帮我们封装成参数列表中声明的类型,比如String,int,double...
public String login(String username, String password){
System.out.println(username);
System.out.println(password);
return null;
}

    // 或者也可以直接接收一个java bean
    public String login(User user){
        System.out.println(user.getUsername());
        System.out.println(user.getPassword());
        return null;
    }

如果请求参数是一个日期,springmvc并不能直接封装到Date中,需要设置一下日期格式:
    public class User {
        private String username;
        private String password;
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date birthday;
        ...
    }

如果请求参数是一个数组类型,我们可以直接通过数组接收:
    @RequestMapping("delSel")
    public String delSel(Integer[] ids) {
        phoneService.delSel(ids);
        return "redirect:list";
    }

如果想要用集合类型来接收数组参数呢?下面的写法可以么?
    @RequestMapping("delSel")
    public String delSel(ArrayList<Integer> ids) {
        phoneService.delSel(ids);
        return "redirect:list";
    }

2.获取servletAPI
可以在Controller方法的形参中直接使用以下类型:
HttpServletRequest
通过request对象获取请求信息
HttpServletResponse
通过response处理响应信息
HttpSession
通过session对象得到session中存放的对象
Model/ModelMap
model是一个接口,modelMap是一个接口实现 。
作用:将model数据填充到域中。

        public String login(User user, HttpServletRequest request, HttpSession session,
                            HttpServletResponse response, Model model)

三,Controller中方法的返回值
可以为Controller中的方法指定三种返回值类型:
ModelAndView
指定视图,并且把model数据放到域中
void
如果返回值为void的时候,可以在controller方法形参上定义request和response,使用request或response指定响应结果
String
逻辑视图名称
四,SpringMVC常用注解
@RequestMapping
声明在方法上:
@RequestMapping(value = "/list", method = RequestMethod.GET)
通过value属性配置该方法的访问路径
通过method属性指定该方法允许的访问方式

声明在类上:
    @RequestMapping("/person")
        窄化请求,可以对请求URL进行分类管理,限制访问该类中的URL必须先访问class类上加上的@RequestMapping注解。
        例如:/person/add,/person/list...

@RequestParam
该注解用来标注一个请求参数:
form中:

controller中:
public String login(@RequestParam(value="username",required=true,defaultValue="noname") String uname)
value:@RequestParam(value="username")等同于@RequestParam("username")
required:参数是否必填
defaultValue:设置默认值

@PathVariable
将路径的一部分作为请求参数,RESTful的基础。
@RequestMapping("/findById/{id}")
public String findById(@PathVariable Integer id, Model model) {
Phone phone = phoneService.findById(id);
model.addAttribute("phone", phone);
System.out.println(".........................");
return "edit";
}

posted on 2018-06-08 19:53  北冥丶中郎将  阅读(121)  评论(0编辑  收藏  举报