java-四十天---springmvc

1  springmvc简介

2 springmvc 工作原理

 DispatcherServlet:前端控制器,不用程序员编写,springmvc提供

 HandlerMapping:处理器映射器,负责查找处理请求的Handler,不用程序员编写,springmvc提供
 HandlerAdapter:处理器适配器,负责调用对应Handler的功能方法处理器请求,不用程序员编写,springmvc
 提供
 Handler:处理器(后端控制器),负责真正处理请求的类,需要程序员编写,编程时通常会将Handler叫
 Controller(控制器)
 ModelAndView:模型数据和逻辑视图的综合体,不需要程序员编写,springmvc提供
 ViewResolver:视图解析器,负责将逻辑视图解析成真正的视图。真正的视图=前缀+逻辑视图名+后缀。不需要
 程序员编写,springmvc提供
 View:视图,程序员要编写。视图可以jsp  html等。

3  springmvc入门程序

开发步骤:

  1. 新建Dynamic Web Project
  2. 添加springmvc所依赖的jar包

        

  1. 在项目的src下添加springmvc配置文件
  2. 修改web.xml文件,在web.xml文件中增加DispatcherServlet配置
  3. 新建Controller类
  4. 测试

4 controller方法的返回值类型

controller方法的返回值类型包括:
1.ModelAndView 
2.String 
3.void

1  ModelAndView

@RequestMapping(value="/modelAndView")

	public ModelAndView modelAndView(){

		//创建ModelAndView对象
		ModelAndView mv = new ModelAndView();

		//ModelAndView存储数据范围和request一样
		mv.addObject("hill", "hello");//request.setAttribute("hill","hello")

		//设置逻辑视图 :hello是逻辑视图名,真正的视图名://WEB-INF/jsp/hello.jsp
		mv.setViewName("hello");
		return mv;
}

2  String

   当返回值类型是String时,可以进行请求转发、重定向、逻辑视图名

@RequestMapping(value="/returnStringForWard")
	public String returnStringForWard(){
		
		//return "forward:WEB-INF/jsp/hello.jsp";
		return "forward:hello.jsp";
	}



//当@RequestMapping注解中只有1个属性value时,value可以省略,直接写url地址
@RequestMapping("/returnStringRedirect")
	public String returnStringRedirect(){
		return "redirect:index.jsp";
	}


@RequestMapping("/returnStringViewName")
public String returnStringViewName(){

		//hello是逻辑视图名,真正的视图是/WEB-INF/jsp/hello.jsp

		return "hello";
	}

3  void

  当返回值为void时,分为:请求转发、请求重定向、返回json结果

  	@RequestMapping("/returnVoidForWard")
	public void returnVoidForWard(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.getRequestDispatcher("index.jsp").forward(request, response);
	}

	@RequestMapping("/returnVoidRedirect")
	public void returnVoidRedirect(HttpServletResponse response) throws IOException {
		response.sendRedirect("index.jsp");
	}

	@RequestMapping("/returnVoidJson")
	public void returnVoidJson(HttpServletResponse response) throws IOException {

		// 创建用户对象
		User user = new User();
		user.setId(1);
		user.setUsername("admin");
		user.setPassword("admin");

		response.getWriter().println(JSONObject.fromObject(user).toString());

	}

4  注意

5  参数绑定

    参数绑定指的是将请求参数中的值绑定到controller方法参数的过程。

   参数绑定支持的数据类型包括:

   默认数据类型:HttpServletRequest、HttpServletResponse、HttpSession、

        Model/ModelMap:ModelMap是Model接口的实现类

        Model:模型,保存数据的对象就是Model,可以将Model当成一个和

        request  session一样的容器。

  1. 基础数据类型  byte short int long char boolean float double
  2. 基础数据类型的封装类 Byte Short Integer Long Character Boolean Float Double
  3. String
  4. 自定义java类型   
  5. 自定义java类型的封装类
  6. 数组
  7. springmvc不支持列表,如果要进行列表处理?
  8. 日期处理,日期类型添加注解

   

     400:Bad Request  坏的请求,当请求参数和controller参数绑定不能正常进行是报错。

 

1、2基础数据类型以及基础数据类型的封装类

@RequestMapping("/paramBinding")

public String paramBinding(String code, String name, Double price, Integer count, Integer status,String description) {

       System.out.println(code + "\t" + name + "\t" + price + "\t" + count + "\t" + status + "\t" + description);

       return null;// 将paramBinding当做逻辑视图名返回,真正的视图:WEB-INF/jsp/paramBinding.jsp

}

 3  String类型

4 自定义java类型

 

5 自定义java类型的封装类

6  数组

7 springmvc不支持列表,如果要进行列表处理?

 

6   中文乱码处理

    <!-- 配置处理中文乱码的过滤器 -->

	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>utf-8</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

7   静态资源文件处理

 静态资源包括:js css image等。
   <!-- 处理静态资源 -->

	<mvc:default-servlet-handler />

8    文件上传

  1  加入jar包

2  在springmvc-servlet.xml文件中增加文件解析器

3 新建controller和jsp

4  测试

发布了78 篇原创文章 · 获赞 83 · 访问量 9294

猜你喜欢

转载自blog.csdn.net/weixin_41847891/article/details/89453274
今日推荐