问题描述
我在使用dubbo和zookeeper练习项目时,遇到404问题。 按理说,“post”地址是没有问题的,this.formData是收到的。
handleAdd () {
//进行表单校验
this.$refs['dataAddForm'].validate((valid) => {
if(valid){
//表单校验通过,发生ajax请求,将录入的数据提交到后台进行处理
console.log(this.formData);
axios.post("/checkitem/add.do",this.formData).then((res) => {
//关闭新增窗口
this.dialogFormVisible = false;
if(res.data.flag){//执行成功
//新增成功后,重新调用分页查询方法,查询出最新的数据
this.findPage();
//弹出提示信息
this.$message({
message:res.data.message,type:'success'
});
}else{//执行失败
//弹出提示
this.$message.error(res.data.message);
}
});
}else{
//校验不通过
this.$message.error("数据校验失败,请检查你的输入信息是否正确!");
return false;
}
});
},
package com.itheima.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.itheima.constant.MessageConstant;
import com.itheima.entity.Result;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckItemService;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 检查项管理
*/
@RestController
@RequestMapping("/checkitem")
public class CheckItemController {
@Reference//查找服务
private CheckItemService checkItemService;
//新增检查项1
@RequestMapping("/add")
public Result add(@RequestBody CheckItem checkItem) {
try{
checkItemService.add(checkItem);
}catch (Exception e) {
e.printstacktrace();//服务调用失败
return new Result(false,MessageConstant.ADD_CHECKITEM_FAIL);
}
return new Result(true,MessageConstant.ADD_CHECKITEM_SUCCESS);
}
}
package com.itheima.service.impl;
import com.alibaba.dubbo.config.annotation.Service;
import com.itheima.dao.CheckItemDao;
import com.itheima.pojo.CheckItem;
import com.itheima.service.CheckItemService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
/**
* 检查项服务
*/
@Service(interfaceClass = CheckItemService.class)
@Transactional
public class CheckItemServiceImpl implements CheckItemService {
// 注入dao
@Autowired
private CheckItemDao checkItemDao;
@Override
public void add(CheckItem checkItem) {
checkItemDao.add(checkItem);
}
}
enter image description here 这是错误信息
哦,我忘记了“.do”,web.xml如下
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.dispatcherServlet</servlet-class>
<!-- 指定加载的配置文件 ,通过参数contextConfigLocation加载 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
当我更改帖子时变成get
axios.get("/checkitem/add.do",this.formData).then((res) => {
可悲的是,它不能工作。
enter image description here
我不知道能不能提供一些信息,当我点击确认提交数据时,404只显示在控制台中,但网络没有响应。 enter image description here
很抱歉忘记显示错误信息,通过这些信息可能可以找到它是什么错误。
10:59:48,611 DEBUG RequestMappingHandlerMapping:312 - Looking up handler method for path /checkitem/add.do
10:59:48,612 DEBUG RequestMappingHandlerMapping:322 - Did not find handler method for [/checkitem/add.do]
10:59:48,613 WARN PageNotFound:1205 - No mapping found for HTTP request with URI [/checkitem/add.do] in dispatcherServlet with name 'springmvc'
10:59:48,613 DEBUG dispatcherServlet:1000 - Successfully completed request
解决方法
我总是试图在前端发现错误导致忘记检查idea的消息,在注意到我迅速解决了这个问题之后。答案是我springmvc的注解包错漏了“itheima”。
<dubbo:application name="health_backend" />
<!--指定服务注册中心地址-->
<dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--批量扫描-->
<dubbo:annotation package="com.itheima.controller" />
<!--
超时全局设置 10分钟
check=false 不检查服务提供方,开发阶段建议设置为false
check=true 启动时检查服务提供方,如果服务提供方没有启动则报错
-->
<dubbo:consumer timeout="600000" check="false"/>