Spring Framework Page Direction - PullRequest
       4

Spring Framework Page Direction

1 голос
/ 27 августа 2011

Предыстория: я относительно новичок в Java / Spring и унаследовал проект, построенный на них.Мы переходим на AWS Elastic Beanstalk, который изменил расположение главной страницы для запросов JSON с:

www.mywebsite.com/myApp/myAppJsonService

на:

www.mywebsite.com/myAppJsonService

Это работало нормально - все функции, которые приходятзапросы JSON (большинство из них) работают отлично.У меня есть другая страница, которая берет загруженную викторину учителя через HTML-форму и анализирует данные.Форма, используемая для указания на:

www.mywebsite.com/myApp/controllers/importQuiz

, поэтому я изменил ее на:

www.mywebsite.com/controllers/importQuiz

Файл web.xml имеет:

<servlet>
    <servlet-name>SpringDispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:context/Controllers.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>SpringDispatcher</servlet-name>
    <url-pattern>/controllers/*</url-pattern>
</servlet-mapping>

И соответствующийControllers.xml code:

<bean id="importExamController" class="com.myapp.controllers.ImportExamController">
    <property name="commandClass" value="com.myapp.objects.spring.FileUploadBean"/>
    <property name="myappManager" ref="myappManager"/>
</bean>

<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="/importExam">importExamController</prop>
            <prop key="/heartbeat">heartBeatController</prop>
        </props>
    </property>
</bean>

То, как я его читаю, независимо от предыдущего «myapp» в URL, должно найти «/ controllers /» в URL, посмотрите файл Controllers.xml.и найдите «/ importExam» и направьте его в «importExamController».Этого не происходитОчевидно, в моей логике есть ошибка, и я не могу ее найти.Любая помощь будет очень признательна.

РЕДАКТИРОВАТЬ:

Делая некоторые рытья в журналах, я нашел:

INFO: WSSERVLET14: JAX-WS servlet initializing
Aug 27, 2011 7:21:06 PM com.sun.xml.ws.transport.http.servlet.WSServletDelegate doGet
SEVERE: caught throwable
ClientAbortException:  java.net.SocketException: Broken pipe
    at org.apache.catalina.connector.OutputBuffer.realWriteBytes(OutputBuffer.java:373)
    at org.apache.tomcat.util.buf.ByteChunk.append(ByteChunk.java:327)
    at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:396)
    at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:385)

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

1 Ответ

1 голос
/ 27 августа 2011

Во-первых, с какой стати вы хотите, чтобы в вашем URL были контроллеры?Во-вторых, у вас есть правильное представление о том, как это должно работать, и вы, вероятно, правы насчет того, что что-то неправильно настроено.

Вам действительно стоит ознакомиться с расширенной функциональностью MVC в Spring 3.0+.С аннотациями и пространством имен mvc ваш код будет выглядеть (например):

@Controller
@RequestMapping("importExam")
public class ExamController {

    private final examService;

    @Autowired
    public ExamController(ExamService examService) {
        this.examService = examService;
    }

    @RequestMapping(method=RequestMethod.GET)
    public String getExams(ModelMap model) {
        model.addAttribute("exams", examService.getExams());
        return "exams";
    }

}

А ваш контроллер просто:

<mvc:annotation-config/>

для загрузки контроллера и привязки сопоставлений запросов кURLs.Это также позволяет использовать подстановочные знаки.Вышеуказанный контроллер будет связывать весь URL-запрос для / importExam с этим контроллером и обрабатывать метод GET по умолчанию в базовом контексте.Вы можете добавить вложенные методы с дополнительными сопоставлениями запросов, которые будут находиться в контексте / importExam.

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