springMVC_day06_restful风格

什么是restful风格

  • Restful就是一个资源定位及资源操作的风格
  • 不是标准也不是协议,只是一种风格
  • 基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制

restful对http的诠释

1.资源定位

通过url定位到资源,不需要修改参数

https://blog.csdn.net/qq_35537301/article/details/82469180

url中没有参数,没有后缀

springmvc中:使用 @PathVariable 注解可以从url中取参数

2.资源操作

使用http的方法实现资源的增删改差。put(增)、delete(删)、post(改)、get(查)

实现restful风格

要求

  • 首先拦截请求方式:/
  • 把参数放在URL中,并且能通过URL中获取参数

获取URL数据

{}

  • 占位符:获取URL中的参数;
  • 占位符中一定要有参数,参数名随便起,建议通俗易懂

@PathVariable

  • 通过URL占位符中获取值
  • 把值映射到形参中
  • 当占位符中的参数名和形参名一致的话,那么@PathVariable中参数可以省略

注意:

  • @PathVariable是获取url上数据的
  • @RequestParam获取请求参数的(包括post表单提交)
  • 如果加上@ResponseBody注解,就不会走视图解析器,不会返回页面,目前返回的json数据
  • 如果不加@ResponseBody,就走视图解析器,返回页面

案例

web.xml文件

	<!-- 配置SrpingMVC的前端控制器 -->
	<servlet>
		<servlet-name>ssm</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
	</servlet>

	<servlet-mapping>
		<servlet-name>ssm</servlet-name>
		<!-- 拦截所有请求不包括jsp -->
		<url-pattern>/</url-pattern>
	</servlet-mapping>
package com.itheima.controller;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

import com.itheima.exception.ItemException;
import com.itheima.pojo.Items;
import com.itheima.pojo.QueryVo;
import com.itheima.service.ItenService;

@Controller
public class ItemController {

	@Autowired
	private ItenService itemService;

	@RequestMapping("list")
	public String itemList(Model model) {
		List<Items> list = itemService.findAllItem();
		// 封装数据传给页面
		model.addAttribute("itemList", list);
		return "itemList";
	}

	/**
	 * @MethodName:itemEdit
	 * @Description:
	 * @param request
	 * @param model
	 * @return
	 * @throws Exception
	 */
	@RequestMapping("itemEdit/{itemId}")
	public String itemEdit(@PathVariable("itemId") Integer id , Model model) throws Exception {// Model:模型,封装数据传递用的
		// 根据商品ID查询商品信息
		Items items = itemService.findItemById(id);

		if (items == null) {
			throw new ItemException("不好意思,没有找到商品");
		}
		// 封装数据传给页面
		model.addAttribute("item", items);

		return "editItem";
	}
	
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值