2017-09-07 18 views
0

いくつかの例を続けていても、動作させることはできません。JSP表示モデル値を作成できません。単純なSpring MVCの例

基本的なSpring MVCを使用して、コントローラから返されたいくつかのデータを表示しようとしました。

. 
├── pom.xml 
└── src 
    └── main 
     ├── java 
     │   └── mywebapp 
     │    ├── config 
     │    │   ├── MyWebAppInitializer.java 
     │    │   ├── RootConfig.java 
     │    │   └── WebConfig.java 
     │    └── web 
     │     └── HomeController.java 
     ├── resources 
     └── webapp 
      └── WEB-INF 
       ├── views 
       │   └── home.jsp 
       └── web.xml 

1)MyWebAppInitializer.java

package mywebapp.config; 
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; 

public class MyWebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer { 

    @Override 
    protected String[] getServletMappings() { 
     return new String[] { "/" }; 
    } 

    @Override 
    protected Class<?>[] getRootConfigClasses() { 
     return new Class<?>[] { RootConfig.class }; 
    } 

    @Override 
    protected Class<?>[] getServletConfigClasses() { 
     return new Class<?>[] { WebConfig.class }; 
    } 
} 

2)RootConfig.javaである:ここ

(春4.3.9、Tomcatの8.5.20およびクロムを使用して)プロジェクト・ツリーであります空のクラス、豆なし。 バージョンA:

package mywebapp.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 
import org.springframework.web.servlet.view.UrlBasedViewResolver; 

@Configuration 
@EnableWebMvc 
@ComponentScan("mywebapp.config") 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Bean 
    public ViewResolver viewResolver() { 
     UrlBasedViewResolver resolver = new UrlBasedViewResolver(); 
     resolver.setViewClass(JstlView.class); 
     resolver.setPrefix("/WEB-INF/views/"); 
     resolver.setSuffix(".jsp"); 
     return resolver; 
    } 

    @Override 
    public void configureDefaultServletHandling(
      DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 
} 

バージョンB: -

3)WebConfig.java私はこの設定ファイルの2つのバージョン使用 - のみviewResolver()に差はあるが

package mywebapp.config; 

import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.ComponentScan; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.web.servlet.ViewResolver; 
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer; 
import org.springframework.web.servlet.config.annotation.EnableWebMvc; 
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; 
import org.springframework.web.servlet.view.InternalResourceViewResolver; 
import org.springframework.web.servlet.view.UrlBasedViewResolver; 
import org.springframework.web.servlet.view.JstlView; 

@Configuration 
@EnableWebMvc 
@ComponentScan("mywebapp.config") 
public class WebConfig extends WebMvcConfigurerAdapter { 

    @Bean 
    public ViewResolver viewResolver() { 
     InternalResourceViewResolver resolver = new InternalResourceViewResolver(); 
     resolver.setPrefix("/WEB-INF/views/"); 
     resolver.setSuffix(".jsp"); 
     return resolver; 
    } 

    @Override 
    public void configureDefaultServletHandling(
      DefaultServletHandlerConfigurer configurer) { 
     configurer.enable(); 
    } 
} 

4)HomeController.java

package mywebapp.web; 
import static org.springframework.web.bind.annotation.RequestMethod.*; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.ui.ModelMap; 

@Controller 
public class HomeController { 
    @RequestMapping(value="/", method=GET) 
    public String home(ModelMap model) { 
    model.addAttribute("xyz","this is my message"); 
     return "home"; 
    } 
} 

5)home.jspを

<%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="ISO-8859-1"%> 
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> 

<html> 
<body> 
<h2>Hello World!</h2> 
<c:out value="${xyz}" /> 
<br>${xyz} 
</body> 
</html> 

6)のweb.xml - "空" であり、Mavenのアーキタイプによって作成された後に変更されませんでした。 WebConfig.java出力の両方のバージョンについては

は同じです。

Hello World! 

${xyz} 
${xyz} 

助けてください!

+0

あなたはのModelAndViewを返すと ":インデックスを前進" を使用して試してみましたか? –

答えて

0

つのステップソリューション:

A)Maven原型が作成したweb.xmlを削除します。

B)pom.xmlに次のMavenプラグインを追加:

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>3.0.0</version> 
     </plugin> 
    </plugins> 
</build> 
関連する問題