一,SpringMVC经常使用配置
1.springmvc默认加载的配置文件是WEB-INF下的springmvc-servlet.xml,而咱们一般将配置文件放在项目的资源目录中,即classpath下,所以须要配置springmvc加载的配置文件地址。
将配置文件转移至resources中,更名,并修改web.xml:
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.获取servletAPIspring
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数据填充到域中。session
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属性指定该方法容许的访问方式mvc
声明在类上: @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:设置默认值app
@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";
}jsp