如果我把地址修改为http://localhost:8080/seckill/seckill/list即写两个seckill就可以打开详细界面了。其实第一个seckill应该是工程名,而第二个seckill才是RequestMapping定义的值,所以按照道理应该是写两个seckill才能打开界面,为什么老师的演示只写一个seckill就打开了界面呢?
这个问题还是比较容易解决的,重点是在tomcat的配置文件server.xml上
新建一个tomcat,配置文件如下:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt" /> </Host>
部署项目,如SecKill这个项目,此时配置文件更改成下面这样的情况:
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true"> <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log" suffix=".txt"/> <Context docBase="SecKill" path="/SecKill" reloadable="true" source="org.eclipse.jst.jee.server:SecKill"/> </Host>
好吧,这个时候就很容看出来了,将我们的这个docBase的"SecKill"这个项目,对应的映射成了path="/SecKill",如果想要项目开发时候不使用项目名,直接将path="",置为空,重启项目,输入路径,OK,完成.
有不清楚的,欢迎互相讨论.
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 配置springmvc --> <!-- 1.开启 springmvc注解模式--> <!-- 简化配置 (1)自动注册 DefaultAnnotationHandlerMapping,AnnotationMethodHandlerAdapter (2)提供一系列:数据绑定,数字日期的format @NumberFormat,@DateTimeFormat xml和json默认读写配置 --> <mvc:annotation-driven/> <!-- <bean class="org.springframework.web.servlet.view.json.MappingJackson2JsonView"> <property name="contentType" value="application/json"/> </bean> --> <!-- 2.servlet-mapping 映射路径:“/” --> <!-- 静态资源默认servlet配置 (1):加入对静态资源的处理:js,gif,png (2):允许使用"/"做整体映射 --> <mvc:default-servlet-handler/> <!-- 3.配置jsp 视图解析器 ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!-- 4:扫描web相关的bean --> <context:component-scan base-package="com.alan.seckil.web"/> </beans><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
找不到映射怎么回事?
老师应该配置了tomcat的
web.xml
spring-web.xml
SeckillController.java
然后运行后,浏览器打开的地址是这样
写成http://localhost:8080/seckill/list 反而 打不开页面
想问下为什么,没明白
默认是localhost:8080/{项目名}
老师在配置文件默认就是/
所以就酱
这是个坑啊,
输入URL:
http://localhost:8080/seckill
才能进入 LIST界面,不知道是啥原因,谁来指点一下
@Controller
@RequestMapping("/seckill")
public class SeckillController {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Autowired
private SeckillService seckillService;
@RequestMapping(value="/list",method=RequestMethod.GET)
public String list(Model model) {
model.addAttribute("list", seckillService.getSeckillList());
return "list";
}
......
你Controller里面的RequestMapping是不是写错了?