使用SpringMVC注解时浏览器开发者工具中出现404问题以及解决方法

        最近在做mrp仓库管理系统项目,使用了SSM框架,现在在做物料入库部分的物料编号添加功能,但是昨天晚上在浏览器开发者工具中遇到一个404错误(jquery.min.js:5 POST http://localhost:8080/xyd_mrpSystem_web/addType.action 404 (Not Found)

我的代码如下:

storage.js

function saveType(){
	alert("123");
	$.ajax({
		type:"post",
		url:getRootPath()+"/addType.action",
		data:{
			"typeId":$("#typeId").val(),
			"typeNum":"XYD-"+$("#myModal_typeNum").val(),
			'typeName':$("#myModal_typeName").val(),
			'typeDesc':$("#typeDesc").val()
		},
		success:function (result) {
			if(result.state) {
				success(result.message);
				
				$("#myModal").modal("toggle");
			}else{
				error(result.message);
			}
			
		},
		error:function () {
			error("网络出现异常,请稍后再试!");
		}
	});
}

TypeAction.java

@Controller
public class TypeAction {
	@Resource
	private TypeService typeService;
	@RequestMapping("addType")
	public DataResult<Type> addType(@Validated Type type,BindingResult bindingResult,@SessionAttribute("currUser") User currUser) {
		System.out.println(type);
		DataResult<Type> dataResult = new DataResult<>();
		
		if (bindingResult.hasErrors()) {
			dataResult.setMessage(bindingResult.getAllErrors().get(0).getDefaultMessage());
		}else {
			//判断当前用户的权限,管理员、主管、仓库管理员都可以进行物料类型添加
			if (currUser.getLevel().matches("[012]")) {
				if (typeService.insertType(type)) {
					dataResult.setMessage("物料类型信息添加完成!");
					dataResult.setState(true);
				} else {
					dataResult.setMessage("物料类型信息添加失败!");
				}
			} else {
				dataResult.setMessage("您没有此操作权限!");
			}
		}
		return dataResult;
	}
}
TypeService.java

@Service
public class TypeService {
	@Resource
	private TypeMapper typeMapper;

	public boolean insertType(Type type) {
		return typeMapper.insertSelective(type) > 0 ? true : false;
	}
}
添加完数据,数据库有添加到数据,后台也有打印数据,就是浏览器的开发者工具报错了


控制台:


       昨天晚上各种检查,硬是没被我发现哪里错了(才会导致出现404错误),可能是晚上不太清醒吧,今天来到教室打开电脑,想着再试一下有没有错,结果还是一样的,我又开始了检查代码,皇天不负有心人,终于被我发现错误在哪,原来我就是一个马大哈,在action中漏写了注解(@ResponseBody),加上这个注解,运行了一下,哈哈,开心,错误消失了,还用一种方式是用(@RestController代替@Controller和 @ResponseBody)。

第一种方式(@Controller
                     @ResponseBody
):


第二种方式(@RestController):


结果是(添加完成,不再报404错误):


解释一下:

             @Controller:用于标记在一个类上,使用它标记的类就是一个SpringMVC Controller 对象

             @ResponseBody:这个注解用于将Controller的方法返回的对象,如果action返回的数据是JSON类型,需要加一个注解,需要加一个注解,返回的JSON数据保存到request域中,需要添加Jackson JSON依赖,有三个包

             @RestController:是@Controller@ResponseBody的组合注解(所以可以代替@Controller@ResponseBody



展开阅读全文

没有更多推荐了,返回首页