Я погуглил эту проблему, но никто не кажется, что у меня точно такая же проблема, как у меня.
Я пытаюсь настроить простое приложение Spring MVC. Это соответствующие файлы:
web.xml
<?xml version="1.0" encoding="ISO-8859-1"?> <web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4"> ... <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <servlet> <servlet-name>MyApp</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>MyApp</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
MyApp-servlet.xml
<?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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <mvc:annotation-driven/> <context:component-scan base-package="myapp.gui"/> <bean class= "org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <property name="suffix" value=".jsp"/> </bean> </beans>
HomeController.java
@Controller public class HomeController { @RequestMapping({"/"}) public String showHomePage(Map<String,Object> model) { return "home"; } }
У меня есть home.jsp в WEB-INF \ views. Проблема в том, что мое приложение не возвращает домашнюю страницу. Я просто получаю 404, и хотя Spring находит мой контроллер (в журнале так написано), он выдает ошибку: пути URL не определены.
Кто-нибудь может увидеть, что я делаю не так?
Пол
Можете ли вы попробовать использовать / app / * в качестве URL-адреса отображения сервлета и / home в качестве RequestMapping.Затем попробуйте получить к нему доступ через / app / home.Существуют определенные проблемы с отображением / * - как только вы настроите работу с / app с остальной частью сопоставления - мы можем рассмотреть удаление / app
Однажды я хотел завершить весенний проект MVC с URL-адресами отдыха, и я тоже не смог найти действительно полезных ресурсов. Я опубликовал статью в своем блоге, но с тех пор удалил блог. Вот выдержка из поста:
Я использую:
Открыть restMVC-servlet.xml - мы хотим, чтобы сервлет искал аннотацию @Controller в классах в конкретном пакете, для этого нам нужно вставить контекст: компонент-сканирование в файл, что означает, что мы Также необходимо добавить схему расположения следующим образом:
restMVC-servlet.xml
@Controller
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="restMVC.web"/> ...
Конечно, мы еще не создали пакет, поэтому давайте сделаем это.
restMVC.web
Теперь мы можем создать наш первый контроллер -
myController
Затем добавьте аннотацию @Controller, затем щелкните правой кнопкой мыши - исправьте импорт:
package restMVC.web; import org.springframework.stereotype.Controller; @Controller public class myController { }
Теперь мы можем добавить несколько URI сопоставления запросов, помните, что теперь у нас есть много разных вариантов сопоставления с использованием аннотации @RequestMapping, поэтому обязательно ознакомьтесь с Spring Docs.
package restMVC.web; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class myController { @RequestMapping("/test") public String getTests(Model model) { List tests = new ArrayList(); tests.add("<a href=\"test/1\">test 1</a>"); tests.add("<a href=\"test/2\">test 2</a>"); model.addAttribute("tests", tests); return "tests"; } @RequestMapping("/test/{testId}") public String getTest(@PathVariable String testId, Model model) { List tests = new ArrayList(); tests.add("test " + testId); model.addAttribute("tests", tests); return "tests"; } }
Нам нужно создать представление для tests.jsp. Это создается путем взятия строки, возвращаемой из методов getTests и getTest («тесты»), и с помощью viewResolver в добавлении restMVC-servlet.xml .jsp - подробнее об этом позже.
tests.jsp
getTests
getTest
.jsp
Редактировать tests.jsp. Введите в верхней части страницы следующее:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
И затем это внутри элемента тела:
<table> <c:forEach var="test" items="${tests}"> <tr> <td>${test}</td> </tr> </c:forEach> </table>
Наконец, нам нужно убедиться, что viewResolver находится в restMVC-servlet.xml. Полный файл должен выглядеть так:
<?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:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="restMVC.web"/> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/jsp/" p:suffix=".jsp" /> </beans>
Возможно, вы захотите отредактировать redirect.jsp, чтобы он перенаправил на /test.
redirect.jsp
/test
Теперь нажмите «Запустить основной проект»