码迷,mamicode.com
首页 > 编程语言 > 详细

Springmvc

时间:2018-07-06 19:39:19      阅读:141      评论:0      收藏:0      [点我收藏+]

标签:表示   springmvc   session   stp   adapter   public   适配   print   提交   

 

springmvc 的工作流程

  1 核心控制器接受用户请求

   2 核心控制器根据 用户的 处理器映射器  找到相关的handler(handler里面包含拦截器以及我们写的hanlder

   3 核心控制器 通过处理器适配器执行 相关的handler 并返回给ModelAndView

   4 核心控制器吧这个交给视图解析器 视图解析器进行解析 返回view

   5 核心控制器 填充数据渲染视图

   6 核心控制器 返回东西给用户

Springmvc开发流程

  1   在web.xml中配置核心控制器 接受请求   并配置相关过滤器

    (1)针对jtomcat8.0  后的post方式的中文乱码配置如下

	<filter>
		<filter-name>CharacterEncodingFilter</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>CharacterEncodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

    (2)核心控制器配置如下:

     <servlet>
		<servlet-name>springDispatcherServlet</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:spring_mvc.xml</param-value>
		</init-param>
		<load-on-startup>1</load-on-startup>
	</servlet>

	<!-- Map all requests to the DispatcherServlet for handling -->
	<servlet-mapping>
		<servlet-name>springDispatcherServlet</servlet-name>
		<url-pattern>/</url-pattern>
	</servlet-mapping>

  

  2   在springmvc全局配置中 配置处理器映射器,配置处理器适配器  配置视图解析器 

    <!-- 1配置处理器映射器 -->

      <!-- 我们这里使用注解处理器映射器 也就是说 我们后面的开发是基于注解的 -->

      <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>

          <!-- 2配置处理器适配器 -->

             <!-- 我们这里使用注解处理器映射器  凡是class上面有@controller的注解  注解处理器映射器都能够处理  -->

             <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>

          <!-- 3配置视图解析器 -->

           <bean

                     class="org.springframework.web.servlet.view.InternalResourceViewResolver">

                <property name="prefix" value="/WEB-INF/jsp/" />

                       <property name="suffix" value=".jsp" />

           </bean>

 

     第一步可以用<mvc:annotation-driven>代替。

   <!-- 配置hander-->

技术分享图片

 

要么用前面的方式配置适配器和映射器  要么用下面这种方式:

    <!-- 1配置处理器映射器 -->
	<context:component-scan base-package="com.cc.web"></context:component-scan>
	<!-- 我们这里使用注解处理器映射器 也就是说 我们后面的开发是基于注解的 -->
	<mvc:annotation-driven></mvc:annotation-driven>

   

配置试图解析器后默认走试图解析器中  如果需要走其他路径  则按下面操作:

  

forward和redirect  中的   /均表示当前项目的的根
@RequestMapping("/test")
	public String test(){
		System.out.println("thist is a test");
		return  "forward:/index.jsp";
	}
	@RequestMapping("/test1")
	public String test1(){
		System.out.println("thist is a test");
		return  "redirect:/index.jsp";
	}

  

 

ModelAndView  用法

技术分享图片

springmvc默认支持多类型的参数绑定。

默认支持哪些类型:

HttpServletRequest、response、session、Model(用于将数据填充到request域)

 

requestParam注解:用于绑定单个请参数的名称和方法形参名一致方可绑定。

    public ModelAndView test2(@RequestParam(value="aaa")  String aaa){  }

数据回写

  1 简单数据回写

  商品修改数据回显:

  注意在进入修改页面的controller方法中和提交修改商品信息方法model.addAttribute方法设置的key一致。

 技术分享图片

 

   

  2    pojo类型数据回显

技术分享图片

      ModelAndView andView = new ModelAndView();

                  andView.addObject("u", user);

                  // 设置页面的地址

                  andView.setViewName("/show_pojo.jsp");

 

 

  使用@ModelAttribute,作用于将请求pojo数据放到Model中回显到页面

  //会把该user对象填充到request中 并且名字叫做u

         public ModelAndView reShowPojo(@ModelAttribute(value="u") User user)

 

 

使用@ModelAttribute将公用的取数据的方法返回值传到页面,不用在每一个controller方法通过Model将数据传到页面。

技术分享图片

显示:

技术分享图片

文件上传:

1  导入夹包

  commons-fileupload-1.3.3.jar

  commons-io-2.1.jar

2   在spring_mvc.xml中配置文件上传解析器

<bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
	<!-- 指定文件中文名的编码 -->
		<property name="defaultEncoding" value="UTF-8" />
		<!-- 指定所上传文件的总大小,单位字节。注意maxUploadSize属性的限制不是针对单个文件,而是所有文件的容量之和 -->
		<property name="maxUploadSize" value="3145728" />

	</bean>

3  写文件上传的表单项(注意文件上传的name属性  后面处理时需要和name同名)

<form action="${pageContext.request.contextPath }/fileup" method="post"  enctype="multipart/form-data">
		<input type="file" name="fi" ></br>
		<input type="submit" value="submit">
	</form>

4  文件上传逻辑处理

@Controller
public class FileUp {
	@RequestMapping("/fileup")
//  file的name必须和方法的形参一致。并且表单的
	public void file(MultipartFile fi,HttpServletResponse response) {
		System.out.println(fi.getOriginalFilename());
		//直接写到某地各方
		File dirFile  = new File("d:/upload/"+System.currentTimeMillis()+fi.getOriginalFilename());
		if(!dirFile.exists())
		{
			dirFile.mkdirs();
		}
		try {
			fi.transferTo(dirFile);
			response.sendRedirect("/mybatis_ddd/NewFile.jsp");
		} catch (IllegalStateException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}	

	}
	
}

  

技术分享图片技术分享图片

 

Springmvc

标签:表示   springmvc   session   stp   adapter   public   适配   print   提交   

原文地址:https://www.cnblogs.com/MyJavaStudy/p/9274261.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!