springMVC学习笔记

1、搭建开发环境
a>、添加jar文件,在ioc所需jar包的基础上添加spring-web.jar,spring-webmvc.jar
b>、在web.xml中配置前端控制器
<servlet>
<servlet-name>example</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>example</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
c>、准备一个配置文件,默认情况下,配置文件的名称为servletName-servlet.xml(example-servlet.xml),位置为WEB-INF
<!-- 打开自动扫描 -->
<context:component-scan base-package="com.sxt.springmvc.web.controller"/>

<!-- 主要作用于@Controller,激活该模式,下面是一种简写形式,完全可以手动配置替代这种简写形式,它会自动注册DefaultAnnotationHandlerMapping与AnnotationMethodHandlerAdapter,是spring
MVC为@Controllers分发请求所必须的 -->
<mvc:annotation-driven/>

<!-- jsp页面解析器,当Controller返回XXX字符串时,先通过拦截器,然后该类就会在/WEB-INF/jsp/目录下,查找XXX.jsp文件 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

d、开发控制器
@Controller
public class HelloController {

@RequestMapping("/hello")
public String hello(Model model,String username /*获取请求参数*/ ){

model.addAttribute("msg", "Hello " + username); //向模型中放入数据

return "world";
}

@RequestMapping("/hello2")
public ModelAndView hello2( @RequestParam(value="name",required=true)String username){
ModelAndView mav = new ModelAndView();

mav.addObject("msg", "@@ Hello " + username );
mav.setViewName("world");
return mav;
}
}


2、使用@RequestMapping将请求映射至控制器的一个方法来处理
a>、请求路径:
b>、请求的方法
c>、请求参数
d>、请求头


3>、问题
a>、如何将请求映射至控制器的一个方法处理
b>、如何获取请求参数
c>、如何将model数据带入jsp
d>、如何生成响应(转发/重定向)
e>、如何访问Servlet API
f>、如何处理异常
aa>、控制器级别
@ExceptionHandler(RuntimeException.class)
public String handlerException(HttpServletRequest request,RuntimeException e) {
request.setAttribute("exception", e);
return "error";
}

bb>、全局,在spring-mvc.xml中
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>

g>、如何对请求参数进行校验
添加bean-validator.jar至构建路径
在需要验证的对象的属性上使用注解声明要执行的验证规则
@NotEmpty(message="员工姓名不能为空!")
public String getName() {
return name;
}

@Range(min=0,max=10000,message="工资的范围必须在0~10000之间")
public double getSalary() {
return salary;
}
在处理方法中进行验证
@RequestMapping(value="/employee/add",method=RequestMethod.POST)
public String add(@Validated Employee emp,BindingResult br,Model model) {
if(br.hasErrors()) { //验证失败
List<Dept> depts = deptService.findAllDepts();
model.addAttribute("depts", depts); //校验失败后,错误消息及emp对象会以employee为key存储在model中
return "emp_add";
}

empService.saveEmployee(emp);
model.addAttribute("msg", "员工添加成功");
return "message";
}

在JSP页面中输出错误消息
<sf:form method="post" modelAttribute="employee">
<sf:errors path="name"/>
<sf:errors path="salary"/>
</sf:form>

日期类型如何转换
/**
* 注册类型转换器
* @param dataBinder
*/
@InitBinder
public void initBinder(WebDataBinder dataBinder) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
CustomDateEditor cde = new CustomDateEditor(sdf, true);
dataBinder.registerCustomEditor(Date.class, cde);
}
h>、如何做国际化
i>、springMVC与spring ioc的整合
j>、restful(rest风格)url的使用
/employee/delete.do?id=7934
/pets/show.do?owerid=3&petid=5

/employee/7934 GET : /employee/7934 DELETE: /employee/7934 , POST : /employee/7934 , PUT : /employee/7934
/employee/7934/delete
/employee/7934/edit
/pets/owner/3/pet/5

k>、json响应
添加jackson相关库(jackson-annotations-2.2.0.jar,jackson-core-2.2.0.jar,jackson-databind-2.2.0.jar)至构建路径
在需要转json的处理方法中直接返回要转为json的对象
在方法上标注@ResponseBody注解
@RequestMapping(value="/employee/json")
@ResponseBody
public List<Employee> edit() {
List<Employee> emps = empService.findAll();
return emps;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值