1.注解式开发之annotation-driven解释
(1)mvc注解驱动在哪个文件中配置?
SpringMVC配置文件中配置
(2)配置mvc注解驱动使用哪个标签?
mvc:annotation-driven</mvc:annotation-driven>
2.注解式开发之视图解析器
(1)视图解析器起到什么作用?
在请求转发是可以对路径进行填充,减少代码的冗余
(2)视图解析器如何使用?
可以使得我们在填写路径时自动在前面或者后面添加字符
<!--自定义视图解析器-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/"></property><!--配置前缀-->
<property name="suffix" value=".jsp"></property> <!--装配后缀-->
</bean>
3.处理器方法常用参数
(1)处理器方法的常用参数有哪些?
原生态的(HttpServlet)request、response @RequestMapping(方法体名) @RequestParam(value=””,defualtValue=””) String name. 给请求数据设置默认值。也用于请求键名和别名的对应,集合对象时必须使用RequestParam来设置键名。
@PathVariable用来声明参数来源于路径中。
@ResponseBody,用于声明响应数据类型是json类型
SpringMVC控制层常用的承载数据的对象有哪些?
实体类对象,和集合对象
4.参数接收之逐个接收
(1)在后端控制器中如何接收前台参数?
@RequestMapping("/{path}")
public String demo(@PathVariable String path){
return path;
}
(2)在后端控制器中接收前台“age”参数,是否需要手动转换成int类型,为什么?
不需要,SpringMVC会自动获取并在转型。
参数接收之对象整体接收
(3)简述以对象形式整体接收参数的步骤?
/*SpringMVC获取表单数据方式三*/
@RequestMapping("demo4")
public String demo4(User user){
System.out.println(user);
return "success.jsp";
}
(4)以对象形式整体接收参数有什么要求?
参数名称需要和属性名称一样
5.参数接收之数组或集合接收参数
(1)请简述用数组或集合接收参数的步骤?
/*SpringMVC获取表单数据方式四*/
@RequestMapping("demo5")
public String demo5(String[] hobby){
System.out.println(hobby[0]);
return "success.jsp";
}
(2)请描述数组和集合接收参数的区别?
获取具体值的方式不同
6.参数接收之域属性参数接收及restful风格传参
(1)域属性参数的接收需要注意什么?
参数名称需要和属性名称一样
(2)什么是restful风格传参?
把参数放在url路径中。
/*测试result方式传递数据*/
@RequestMapping("/demo7/{uname}/{pwd}")
public String demo7(@PathVariable String uname,@PathVariable String pwd){
System.out.println(uname+"---"+pwd);
return "success.jsp";
}
7.参数接收之接收json
(1)如何在后端控制器中接收前台传过来的Json字符串?
@RequestMapping("ajax")
public void ajax1(String name, HttpServletResponse resp) throws IOException {
resp.setContentType("text/html;charset=utf-8");
Student stu = new Student(19,"张三","男");
resp.getWriter().println(new Gson().toJson(stu));
}
(2)如何将页面中的Json对象转换成Json字符串?
8.获取请求头中信息@RequestHeader
(1)请求头中有哪些常用信息?
(2)@RequestHeader该注解放到什么位置?
方法的形参形式
9.处理器方法返回值类型String
(1)处理器方法何时使用String作为返回值类型?
/*
* 请求转发:完整写法:forward:/index.jsp
* 相对路径:index.jsp(..index.jsp)
* 根路径:/index.jsp
* 绝对路径:http://www.baidu.com 不支持
* */
@RequestMapping("demo1")
public String demo1(){
// return "index.jsp";
//return "/index.jsp";
return "forward:/index.jsp";
}
/*
* 重定向:redirect:/index.jsp
* 相对路径:index.jsp(..index.jsp)
* 根路径:/index.jsp
* 绝对路径:http://www.baidu.com
* */
@RequestMapping("demo2")
public String demo2(){
//return "redirect:/index.jsp";
return "redirect:http://www.baidu.com";
}
(2)如果处理器方法返回值类型为String,默认情况访问该方法会如何跳转?
会默认调用请求转发。
10.处理器方法无返回值void
(1)如果处理器方法无返回值,那么能否进行资源跳转及传递数据,如何实现?
可以,通过原生的resp进行调整
(2)何时处理器方法无返回值较合适?
直接响应
11.处理器方法返回值类型Object
(1)如何将处理器方法返回值返回到前台?
返回带Object类型。
12.请求转发与重定向
(1)请描述请求转发与重定向区别?
(2)在javaEE中请求转发和重定向是如何实现的?
req.getRequestDispatcher("/show.jsp");
resp.sendRedirect("/show.jsp");
13.文件上传
(1)文件上传时,表单中添加了什么属性,具体值是什么?
将form表单的提交方式设置为post 将form表单属性ectype的值设置为multipart/form-data
(2)使用springMVC进行文件上传时,接收文件的参数类型是什么?
MultipartFile photo
14.文件下载
(1)该视频中后端控制器方法的返回值类型是什么?
void
(2)文件下载时后端控制器中涉及哪些步骤?
1.获取下载图片路径;2.获取输出流资源,输出流资源。3.响应体重输出内容。
15.自定义拦截器
(1)如何自定义拦截器?
public class MyInterCeptor implements HandlerInterceptor {
/**
* 控制单元方法执行前
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
System.out.println("preHandle()");
return false;
}
/**
* 数据处理后
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, ModelAndView modelAndView) throws Exception {
System.out.println("postHandle()");
}
/**
* 页面渲染前
* @param httpServletRequest
* @param httpServletResponse
* @param o
* @param e
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o, Exception e) throws Exception {
System.out.println("afterCompletion()");
}
}
(2)如何注册拦截器?
<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/servlet/login"/>
<bean id="my" class="an.sz.interceptor.MyInterCeptor"></bean>
</mvc:interceptor>
</mvc:interceptors>
16.自定义拦截器-添加拦截器后执行流程(对应31-32视频)
(1)自定义拦截器实现HandlerInterceptor接口需要实现哪些方法,这些方法分别是何时执行?
public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2) throws Exception{};
public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView m)throws Exception {}
public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3)throws Exception {}
(2)程序中有多个拦截器,那么程序的执行流程是怎样的?
按配置文件的配置顺序执行
17.Spring与SpringMVC父子容器关系解释
(1)简述Spring与SpringMVC的关系?
SpringMVC是Spring的子容器。
注意:SpringMVC和Spring在使用时,需要各自声明配置文件。