Весна MVC Привет, мир - PullRequest
       2

Весна MVC Привет, мир

0 голосов
/ 11 января 2012

Сначала я хочу извиниться за, возможно, дублирующую тему, но не смог найти ответ на свой вопрос.

Я пытаюсь начать изучать Spring MVC 3.0.

Мне нравится Netbeans IDE (с использованием 7.0.1). Я нахожу пару уроков, но как новичок я запутался, потому что некоторые используют аннотации, а некоторые свойства XML. Я понимаю концепцию архитектуры MVC. Но не понимаю настройки xml.

Чего я хочу добиться - это перейти от index.htm (.jsp?) К HelloWorldPage.htm.

index.jsp

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Welcome to Spring Web MVC project</title>
    </head>

    <body>
        <p>Hello! This is the default welcome page for a Spring Web MVC project.</p>
        <a href ="HelloWorldPage.htm">Hello</a>
    </body>
</html>

HelloWorldPage.jsp

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
     <body>
    <h1>Hello!</h1>
    </body>
</html>

HelloWorldController.java

public class HelloWorldController extends AbstractController{   

         @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest request,
        HttpServletResponse response) throws Exception {

        ModelAndView model = new ModelAndView("HelloWorldPage");
        return model;
    }

}

грузоотправитель-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:aop="http://www.springframework.org/schema/aop"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
       http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

    <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>


    <!--
    Most controllers will use the ControllerClassNameHandlerMapping above, but
    for the index controller we are using ParameterizableViewController, so we must
    define an explicit mapping for it.
    -->
    <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="index.htm">indexController</prop>
            </props>
        </property>
    </bean>

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          p:prefix="/WEB-INF/jsp/"
          p:suffix=".jsp" />

    <!--
    The index controller.
    -->
    <bean name="indexController"
          class="org.springframework.web.servlet.mvc.ParameterizableViewController"
          p:viewName="index" />

</beans>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>/WEB-INF/applicationContext.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <servlet>
        <servlet-name>dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>dispatcher</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>redirect.jsp</welcome-file>
    </welcome-file-list>
</web-app>

Структура проекта:

Я не могу публиковать фотографии. Но я использую стандартную структуру netbeans. HelloworldController.java находится в контроллере пакетов, а файлы jsp находятся в web-inf / jsp /

Может кто-нибудь помочь мне с этой проблемой? Я понимаю основное взаимодействие, но отсутствует XML-бины и т. Д.

Я так отчаялся, что думаю об использовании распорок вместо пружины. Проблема в том, что я должен создать веб, который обращается к базе данных (я думаю, что я использую hibernate для отображения), и это мое начало.

1 Ответ

0 голосов
/ 21 мая 2014

С аннотациями:

В вашем dispatcher-servlet.xml:

добавьте следующие импорта:

xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"

Также добавьте их в список вашей схемыРасположение:

http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.1.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd

Затем вам нужно будет указать сервлету, что вы хотите использовать аннотации, что можно сделать, добавив:

<mvc:annotation-driven/>

Далее вам нужно будет указать, где он должен бытьсканирование для контроллеров:

<context:component-scan base-package="ui.controller" />

(«ui.controller» - это то, что я обычно использую, не стесняйтесь использовать все, что вам нравится.)

В вашей папке Source Packages:

Вам нужно добавить местоположение, которое вы только что определили в вашем сервлете.Поэтому создайте новый пакет, для меня он будет называться «ui.controller».

Затем вы добавляете в эту папку класс Java, ваш контроллер.Я назову его «HelloWorldController».

В вашем контроллере:

Добавьте аннотацию, чтобы убедиться, что диспетчер знает, что класс является контроллером.

@Controller
public class HelloWorldController{ ... }

Следующийвы хотите сделать, это определить, когда этот контроллер используется, так как вы можете использовать несколько контроллеров.Вы также можете быть более конкретным, определив, когда используется один метод в этом контроллере.

Для этого вы будете использовать аннотацию:

@RequestMapping("/HelloWorldPage")
protected ModelAndView showHelloWorldPage(){
    return new ModelAndView("HelloWorldPage")
}

Так что теперь, когда вы отправляете lnkв местоположение, которое вы определили с помощью аннотации RequestMapping, будет вызван метод showHelloWorlPage.

Вы даже можете изменить отображение запроса на что-то совершенно другое, например "pageA"

@RequestMapping("/PageA")
protected ModelAndView showHelloWorldPage(){
    return new ModelAndView("HelloWorldPage")
}

, которое не закрывается и не вызывает эту страницу из вида:

<a href ="PageA.htm">Hello</a>

Это будет гарантировать, что ссылка, показанная вашим пользователям, не сообщает им имена файлов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...