Springmvc2 Springmvc项目搭建步骤(String类型 ModelAndView类型 Void类型)的返回值 @RequestParam注解 Ajax注解

本文深入探讨了SpringMVC框架的搭建与使用,包括项目结构、数据响应、页面跳转、注解应用、Restful风格URL及异常处理等内容,特别强调了文件上传和统一异常处理的实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

回顾:
	MVC : spring框架提供的实现了mvc思想的web层框架
	入门: 坐标,编写控制器类,springmvc的配置文件,web.xml 
	组件: 核心控制器,处理器映射器,处理器适配器,视图解析器
	参数: 约定俗成
	返回值: string类型的返回值

Springmvc项目搭建步骤

<1>

在这里插入图片描述

如果项目需要访问webapp下的静态资源(例如image和js),还需要配置静态资源映射  详见下图
在这里插入图片描述

<2>在这里插入图片描述
<3>项目结构

在这里插入图片描述

1 数据响应与页面跳转
1.1 String类型的返回值
1.1.1 数据响应
使用request对象完成(1.获取request,2.将数据保存到request域中,3.页面使用el获取)

1.1.2 页面跳转
简写: 只支持请求转发的形式
完整:
跳转方法(forward|redirect):页面的完成路径

1.2 ModelAndView类型的返回值
在这里插入图片描述
1.3 Void类型返回值(请求转发和重定向)
在这里插入图片描述
2. 常见注解
2.1 获取请求数据(了解)
2.1.1 获取请求中的请求头信息
在这里插入图片描述
2.1.2 获取请求中cookie中的内容
在这里插入图片描述
2.2 功能性注解(看看得了)
2.2.1 ModelAttribute

ModelAttribute配置到一个非控制器方法上. 配置的方法会在所有控制器方法之前执行

在这里插入图片描述
2.2.2 SessionAttributes
SessionAttributes配置到控制器类上,自动的将此类中request域(指定)的内容存入到session中
在这里插入图片描述

package cn.itcast.controller;

import cn.itcast.domain.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes;
import org.springframework.web.bind.support.SessionStatus;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

@Controller
@SessionAttributes(names={"user"})
public class SsessionAttributesController {

	//存入session
	@RequestMapping("/login")
	public String login(Model model) {
		User user = new User();
		user.setUsername("zhangsan");
		user.setAge(12);
		//request.setAttribute("user",user); //将request域中存入一个叫做user的对象
		model.addAttribute("user",user); //交给springmvc进行后续处理(将数据保存到reqeust和session中)
		return "success";
	}


	//检测session
	@RequestMapping("/testSession")
	public String testSession(HttpSession session) {
		Object obj = session.getAttribute("user");
		if(obj==null) {
			System.out.println("session中为null");
		}else{
			User user = (User) obj;
			System.out.println(user);
		}
		return "success";
	}

	/**
	 *  SessionStatus: 工具类
	 */
	//清空session
	@RequestMapping("/clearSession")
	public String clearSession(SessionStatus ss) {
		ss.setComplete(); //清空session
		return "success";
	}
}

2.3 请求参数注解@RequestParam
在这里插入图片描述
在这里插入图片描述
2.4 Ajax注解

引入三个依赖

<!--
    spring调用jackson进行对象与json之间的相互转化
-->
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.9.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-annotations</artifactId>
    <version>2.9.0</version>
</dependency>

@ResponseBody
@RequestBody

这两个注解的作用是自动做json对象的转化

在这里插入图片描述
在这里插入图片描述

请求是json格式
在这里插入图片描述
响应也是json格式
在这里插入图片描述

2.5 RestFull注解

@PathVariable : 获取地址参数

对同一个url,根据不同的请求方式(post,get,delete,put),完成不同的业务处理
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

package cn.itcast.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
@RequestMapping("/user")
public class UserController {

	/**
	 * url风格 :  /user/2  : 地址参数
	 *      1.地址参数如何定义
	 *          url中定义地址参数: {自定义参数名}
	 *          如何获取地址参数的值 : 使用@PathVaribale
	 *              获取地址参数中的内容 : 配置到参数上
	 *                  语法: @PathVaribale(value="自定义参数名")
	 *
	 *      2.如何配置此路径的请求方式
	 *          在@RequestMapping注解中使用method制定rest的请求方式
	 *
	 * @return
	 */

	//1.根据id查询用户
	@RequestMapping(value="/{userId}" ,method = RequestMethod.GET)
	public String findById(@PathVariable(value="userId") String userId) {
		System.out.println("根据id查询用户,id="+userId);
		int i = 1/0;
		return "success";
	}

	//2.根据id更新用户
	@RequestMapping(value="/{userId}",method = RequestMethod.PUT)
	public String update(@PathVariable(value="userId") String id) {
		System.out.println("更新用户,id="+id);
		return "success";
	}

	//3.根据id删除用户
	@RequestMapping(value="/{userId}",method = RequestMethod.DELETE)
	public String delete(@PathVariable(value="userId") String id) {
		System.out.println("删除用户,id="+id);
		return "success";
	}

	//4.保存用户
	@RequestMapping(value="",method = RequestMethod.POST)
	public String save() {
		System.out.println("保存用户");
		return "success";
	}

	//5.查询全部用户
	@RequestMapping(value="",method = RequestMethod.GET)
	public String findAll() {
		System.out.println("查询全部");
		return "success";
	}





	/**
	 * 分页查询所有用户
	 *   参数
	 *      RequestParam : 应用于请求参数名和方法参数名不一致的情况下
	 *          value|name : 可接受的参数名
	 *          required : 指定当前参数是否必须 (false|true) :不配置
	 *          defaultValue : 指定参数的默认值
	 */
	@RequestMapping(value="/findAll")
	public String findAll(@RequestParam(value="no",defaultValue="1") Integer pageNo) {
		System.out.println("分页查询pageno = " + pageNo);
		return "success";
	}
}

  1. 静态资源映射

  2. 在这里插入图片描述
    在这里插入图片描述

  3. 统一异常处理
     自定义异常处理器
     将异常处理器交给spring容器管理
    在这里插入图片描述

  4. 文件上传
    5.1 业务流程
    在这里插入图片描述
    5.2 注意事项
    5.2.1 页面注意事项
    1.提交方式 : post
    2.enctype : 字节流数组
    3.文件input的type = file

5.2.2 Java服务端注意事项
1.导入文件上传的jar包
common-fileupload
2.文件上传的配置
springmvc的配置文件
3.在java代码中使用MultipartFile对象操作文件
5.3 代码实现
5.3.1 页面
在这里插入图片描述
5.3.2 Java服务端
5.3.2.1 文件上传的坐标

<!--文件上传的坐标-->
<dependency>
    <groupId>commons-fileupload</groupId>
    <artifactId>commons-fileupload</artifactId>
    <version>1.3.1</version>
</dependency>

5.3.2.2 Springmvc的配置

<!--配置文件上传-->
<!-- id 的值是固定的-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
    <!-- 设置上传文件的最大尺寸为 5MB   5*1024*1024-->
    <property name="maxUploadSize" value="5242880"></property>
</bean>

在这里插入图片描述

面试总结
@RequestBody和@ReponseBody
RestFull
统一异常处理
文件上传

作业:
Ajax
Restfull
统一异常
文件上传

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值