搭建springMVC环境

1、引入jsp-api、servlet-api jstl

2、注册DispatcherServlet

 <servlet>
			<servlet-name>springmvc</servlet-name>
			<!--核心控制器,拦截所有请求进行分发-->
			<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
			<init-param>
			  <param-name>contextConfigLocation</param-name>
			  <param-value>classpath:springmvc-servlet.xml</param-value>
			</init-param>
			<load-on-startup>1</load-on-startup>
		  </servlet>
		  <servlet-mapping>
			<servlet-name>springmvc</servlet-name>
			<url-pattern>/</url-pattern>
		  </servlet-mapping>

3、配置springmvc-servlet.xml(出现404,导包putinfo)

  <!--处理器映射,HanderMapping-->
			 <!--<bean name="/hello" class="controller.IndexController"/>-->
			  <!--扫描包-->
			<context:component-scan base-package="controller"/>
			<!--启动注解-->
			<mvc:annotation-driven/>
			 <!--视图解析器-->
			 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
				  <property name="prefix" value="/WEB-INF/jsp/"/>
				  <property name="suffix" value=".jsp"/>
			 </bean>

2、/和/*
	  < url-pattern > / </ url-pattern > 
	          不会匹配到.jsp, 只针对我们编写的请求;即:.jsp 不会进入spring的 DispatcherServlet类 。
		  < url-pattern > /* </ url-pattern > 
		          会匹配 *.jsp,会出现返回 jsp视图 时再次进入spring的DispatcherServlet 类,
		          导致找不到对应的controller所以报404错。
		3、<mvc:default-servlet-handler />: 让Spring MVC不处理静态资源,静态资源过滤 :HTML . JS . CSS . 图片 , 视频 .....

4、RestFul 风格:

       Restful就是一个资源定位及资源操作的风格。不是标准也不是协议,只是一种风格。基于这个风格设计的软件可以更简洁,更有层次
	   传统方式操作资源  :通过不同的参数来实现不同的效果!方法单一,post 和 get

			http://127.0.0.1/item/queryItem.action?id=1 查询,GET
			http://127.0.0.1/item/saveItem.action 新增,POST
			http://127.0.0.1/item/updateItem.action 更新,POST
			http://127.0.0.1/item/deleteItem.action?id=1 删除,GET或POST

       使用RESTful操作资源 :可以通过不同的请求方式来实现不同的效果!如下:请求地址一样,但是功能可以不同!
			http://127.0.0.1/item/1 查询,GET
			http://127.0.0.1/item 新增,POST
			http://127.0.0.1/item 更新,PUT
			http://127.0.0.1/item/1 删除,DELETE
	   使用路径变量的好处:
           使路径变得更加简洁;
           获得参数更加方便,框架会自动进行类型转换。

5、所有的地址栏请求默认都会是 HTTP GET 类型的。

     method=RequestMethod.GET/POST/PUT/DELETE
   方法级别的注解变体有如下几个:组合注解
        @GetMapping
		@PostMapping
		@PutMapping
		@DeleteMapping
		@PatchMapping

6、转发与重定向:

     重定向:
        return "redirect:student/login";  //WEBINF中的jsp必须经过dispatherServlet,重定向只能通过controller之间跳转一个空的请求转发进行重定向,相当于用户第二次访问的是一个controller
        return "redirect:index.jsp";   // WEBINF之外的jsp可不经过dispatherServlet和视图解析器直接;重定向
	 转发:
	    return "index";  //转发,一定会经过视图解析器

7、接收前端参数

       基本类型和String,提交的域名称和处理方法的参数名一致可自动映射,不一致则使用@RequestParam("name") String userName
	   对象,提交的域名称和属性名必须一致,否则为null

8、向前端返回参数

    ModelAndView
	Model
	Map<String,Object> map
	ModelMap 

9、解决乱码

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

10、json转换

 fastJson
	<dependency>
		<groupId>com.alibaba</groupId>
		<artifactId>fastjson</artifactId>
		<version>1.2.76</version>
	</dependency>

11、 解决乱码:

    1、@RequestMapping(value = "/index7",produces = {"application/json;charset=UTF-8"})

2、xml

 <mvc:annotation-driven>
   <mvc:message-converters register-defaults="true">
	   <bean class="org.springframework.http.converter.StringHttpMessageConverter">
		   <constructor-arg value="UTF-8"/>
	   </bean>
	   <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
		   <property name="objectMapper">
			   <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">
				   <property name="failOnEmptyBeans" value="false"/>
			   </bean>
		   </property>
	   </bean>
   </mvc:message-converters>
</mvc:annotation-driven>

12、在类上直接使用 @RestController ,里面所有的方法都只会返回 json 字符串

13、文件上传

 1、导入依赖
	   <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
		<dependency>
			<groupId>commons-io</groupId>
			<artifactId>commons-io</artifactId>
			<version>2.4</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
		<dependency>
			<groupId>commons-fileupload</groupId>
			<artifactId>commons-fileupload</artifactId>
			<version>1.3.1</version>
		</dependency>
 2、 <!-- 配置MultipartResolver 用于文件上传 使用spring的CommosMultipartResolver -->
	 <!--        defaultEncoding配置请求的编码格式,默认为iso-8859-1-->
	 <!--        maxUploadSize配置文件的最大单位,单位为字节-->
	 <!--        maxInMemorySize配置上传文件的缓存 ,单位为字节-->
		<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
			<property name="defaultEncoding" value="UTF-8" />
			<property name="maxUploadSize" value="102400000" />
			<property name="maxInMemorySize" value="4096" />
		</bean>
 3、@RequestMapping("fileUpload")
	public String fileUpload(@RequestParam("file") MultipartFile file) {
		// 判断文件是否为空
		if (!file.isEmpty()) {
			try {
				// 文件保存路径
				String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"
						+ file.getOriginalFilename();  //获取上传文件的原名
				// 转存文件,保存到一个目标文件中。
				file.transferTo(new File(filePath));
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
     // 重定向
		return "redirect:/page/uploadfile.html";
	}

  4、<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-war-plugin</artifactId>
            <version>2.2</version>
            <configuration>
                <webResources>
                    <resource>
                        <!--webapp所在路径,此处我放在项目下,和src同级-->
                        <directory>web</directory>
                    </resource>
                </webResources>
            </configuration>
            </plugin>

14、多文件上传

    @RequestMapping("filesUpload")
	public String filesUpload(@RequestParam("files") MultipartFile[] files) {
		//判断file数组不能为空并且长度大于0
		if(files!=null&&files.length>0){
			//循环获取file数组中得文件
			for(int i = 0;i<files.length;i++){
				MultipartFile file = files[i];
				//保存文件
				saveFile(file);
			}
		}
		// 重定向
		return "redirect:/page/uploadfiles.html";
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值