Spring MVC:使用ant-style

时间:2018-05-29 01:37:49

标签: spring-mvc

Spring MVC:使用ant-style

的RequestMapping URL问题

这是我的代码:

@Controller
@RequestMapping("/*emp*")   // Ant Style
public class EmployeeController {

    @Autowired
    EmployeeService service;

    @RequestMapping("/add")
    public ModelAndView employee() {
        ModelAndView modelAndView = new ModelAndView("emp/add", "command", new Employee());
        return modelAndView;
    }

    @RequestMapping("/employees")
    public ModelAndView getEmployeeList() {
        ModelAndView modelAndView = new ModelAndView("/emp/employees", "list", service.getEmployeeList());
        return modelAndView;
    }

    @RequestMapping(value = "/create")
    public String createEmployee(@ModelAttribute Employee employee, ModelMap model) {
        service.newEmployee(employee);
        model.addAttribute("name", employee.getName());
        model.addAttribute("age", employee.getAge());
        model.addAttribute("id", employee.getId());
        return "/emp/create";
    }
}

当我运行我的Tomcat服务器时,在与URL映射相关的控制台部分中打印以下行:

May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/add] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/add.*] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/add/] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/employees] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/employees.*] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/employees/] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/employees/] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/create] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/create.*] onto handler 'employeeController'
May 29, 2018 6:38:10 AM org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping registerHandler
INFO: Mapped URL path [/*emp*/create/] onto handler 'employeeController'

我可以成功执行以下网址:

http://localhost:8080/Spring/emp/add
http://localhost:8080/Spring/emp/create

但是在尝试执行以下网址时,我遇到了404页面:

http://localhost:8080/Spring/emp/employees

但是使用以下URL成功执行了相同的页面:

http://localhost:8080/Spring/employees

为什么只对一个特定网址进行此行为更改? 如何使用相同的实现成功执行以下网址:

http://localhost:8080/Spring/emp/employees

1 个答案:

答案 0 :(得分:1)

因为emp也存在于员工中。因此,您的请求将映射到Class上的RequestMapping。

将您的代码更改为以下内容 -

Weapon bfg = MakeBFG(idCounter++);

这应该可以解决问题。