我遇到spring-mvc / tomcat的问题,更具体地说是Url 当我尝试执行时:http://localhost:8080/HelloWeb/index.html
警告:在DispatcherServlet中找不到带有URI [/HelloWeb/index.html]的HTTP请求的映射,其名称为' HelloWeb'
的HelloWeb-servlet.xml中:
<context:component-scan base-package="pl.solsoft.web"/>
<bean id="freemarkerConfig" class="org.springframework.web.servlet.view.freemarker.FreeMarkerConfigurer">
<property name="templateLoaderPath" value="/WEB-INF/pages"/>
</bean>
<bean id="viewResolver" class="org.springframework.web.servlet.view.freemarker.FreeMarkerViewResolver">
<property name="cache" value="true"/>
<property name="prefix" value=""/>
<property name="suffix" value=".ftl"/>
</bean>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/pages/"/>
<property name="suffix" value=".jsp"/>
</bean>
StudentController:
@Controller
public class StudentController{
private static List<User> userList=new ArrayList<User>();
static {
userList.add(new User("Bill", "Gates"));
userList.add(new User("Kasia", "K"));
}
@RequestMapping(value = "/index", method = RequestMethod.GET)
public String index (@ModelAttribute("model") ModelMap model){
model.addAttribute("userList", userList);
return "index";
}
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(@ModelAttribute("user") User user){
if (null != user && null != user.getName()
&& null != user.getLastName() && !user.getName().isEmpty()
&& !user.getLastName().isEmpty()) {
synchronized (userList) {
userList.add(user);
}
}
return "redirect:index.html";
}
}
的web.xml:
<display-name>HW</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>HelloWeb</servlet-name>
<servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>HelloWeb</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
感谢U提供的所有提示
答案 0 :(得分:0)
如果您将.html添加到RequestMappings,例如,该怎么办? @RequestMapping(值=&#34; /index.html")
答案 1 :(得分:0)
在您的web.xml中,您已映射DispatcherServlet以处理与* .html匹配的请求。但是你的StudentController没有被映射来处理这样的请求。
修改@RequestMapping中的值以包含.html扩展名。
@RequestMapping(value = "/index.html", method = RequestMethod.GET)
public String index (@ModelAttribute("model") ModelMap model){
......
return "index";
}
@RequestMapping(value = "/add.html", method = RequestMethod.POST)
public String add(@ModelAttribute("user") User user){
.....
return "redirect:index.html";
}
现在尝试访问http://localhost:8080/HelloWeb/index.html
来访问您的网页-----------编辑-----------------------------
验证Controller是否已被Spring初始化。为此,创建一个无参数构造函数并尝试将某些内容打印到控制台。
@Controller
public class StudentController{
public StudentController(){
System.out.println("Hey, I'm in StudentController");
}
}
答案 2 :(得分:0)
我没看到<mvc:annotation-driven/>
在您的servlet配置中。你可以添加和检查。谢谢。
答案 3 :(得分:0)
如果您尝试将HTML文件部署为简单的静态文件,则应将其配置为此类。将此添加到您的调度程序servlet,确保您声明了正确的名称空间:
<mvc:resources mapping="*.html" location="/" />
您不需要控制器方法来提供此文件。如果您想在后端使用其他逻辑,则可以请求/index
执行其操作,然后重定向到您的文件,或者只需将index.html
转换为.jsp文件。现在,您的控制器很可能正在尝试查找名为index.html
的JSP视图,该视图不存在。