質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

0回答

2706閲覧

Spring MVC Controllerが動かない

kokok

総合スコア145

MVC

MVC(Model View Controller)は、オブジェクト指向プログラミングにおけるモデル・ビュー・コントローラーの総称であり、ソフトフェア開発で使われている構築パターンとしても呼ばれます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2020/10/15 01:23

java

1//ItemController.java 2 3package controller; 4 5import java.io.BufferedInputStream; 6import java.io.IOException; 7import java.io.InputStream; 8import java.io.OutputStream; 9import java.util.HashMap; 10import java.util.List; 11import java.util.Map; 12 13import javax.servlet.http.HttpServletResponse; 14import javax.validation.Valid; 15 16import org.springframework.beans.factory.annotation.Autowired; 17import org.springframework.stereotype.Controller; 18import org.springframework.validation.BindingResult; 19import org.springframework.web.bind.annotation.RequestMapping; 20import org.springframework.web.bind.annotation.RequestMethod; 21import org.springframework.web.servlet.ModelAndView; 22 23import logic.Item; 24import logic.ItemService; 25 26@Controller 27public class ItemController{ 28 29 @Autowired 30 private ItemService itemService; 31 @RequestMapping 32 public ModelAndView index() { 33 34 List<Item> itemList = this.itemService.getItemList(); 35 36 37 Map<String, Object> model = new HashMap<String, Object>(); 38 model.put("itemList", itemList); 39 40 41 ModelAndView modelAndView = new ModelAndView("index"); 42 modelAndView.addAllObjects(model); 43 44 return modelAndView; 45 } 46 47 @RequestMapping(method = RequestMethod.POST) 48 public ModelAndView search(String itemName) { 49 if (itemName == null || itemName.equals("")) { 50 51 return this.index(); 52 } 53 54 List<Item> itemList = this.itemService.getItemByItemName(itemName); 55 if (itemList == null || itemList.isEmpty()) { 56 57 return this.index(); 58 } 59 60 61 ModelAndView modelAndView = new ModelAndView("index"); 62 modelAndView.addObject("itemList", itemList); 63 64 return modelAndView; 65 } 66 67 @RequestMapping 68 public ModelAndView create() { 69 ModelAndView modelAndView = new ModelAndView("add"); 70 modelAndView.addObject(new Item()); 71 return modelAndView; 72 } 73 74 @RequestMapping(method = RequestMethod.POST) 75 public ModelAndView register(@Valid Item item, BindingResult bindingResult) { 76 if (bindingResult.hasErrors()) { 77 ModelAndView modelAndView = new ModelAndView("add"); 78 modelAndView.getModel().putAll(bindingResult.getModel()); 79 return modelAndView; 80 } 81 this.itemService.entryItem(item); 82 return this.index(); 83 } 84 85 @RequestMapping 86 public ModelAndView edit(Integer itemId) { 87 ModelAndView modelAndView = new ModelAndView("update"); 88 Item item = this.itemService.getItemByItemId(itemId); 89 modelAndView.addObject(item); 90 return modelAndView; 91 } 92 93 @RequestMapping(method = RequestMethod.POST) 94 public ModelAndView update(@Valid Item item, BindingResult bindingResult) { 95 if (bindingResult.hasErrors()) { 96 ModelAndView modelAndView = new ModelAndView("update"); 97 modelAndView.getModel().putAll(bindingResult.getModel()); 98 return modelAndView; 99 } 100 this.itemService.updateItem(item); 101 return this.index(); 102 } 103 104 @RequestMapping 105 public ModelAndView confirm(Integer itemId) { 106 ModelAndView modelAndView = new ModelAndView("delete"); 107 Item item = this.itemService.getItemByItemId(itemId); 108 modelAndView.addObject(item); 109 return modelAndView; 110 } 111 112 @RequestMapping(method = RequestMethod.POST) 113 public ModelAndView delete(Item item) { 114 this.itemService.deleteItem(item); 115 return this.index(); 116 } 117 118 @RequestMapping 119 public void image(Integer itemId, HttpServletResponse response) { 120 response.setContentType("image/jpeg"); 121 InputStream picture = null; 122 OutputStream os = null; 123 BufferedInputStream bis = null; 124 try { 125 picture = this.itemService.getPicture(itemId); 126 os = response.getOutputStream(); 127 bis = new BufferedInputStream(picture); 128 int data; 129 while ((data = bis.read()) != -1) { 130 os.write(data); 131 } 132 } catch (IOException e) { 133 throw new RuntimeException(e); 134 } finally { 135 try { 136 if (picture != null) { 137 picture.close(); 138 os.close(); 139 bis.close(); 140 } 141 } catch (IOException e) { 142 // close�ł��Ȃ����������Ȃ̂Ŗ������� 143 } 144 145 } 146 } 147}

xml

1//applicationContext.xml 2 3<?xml version="1.0" encoding="UTF-8"?> 4<beans xmlns="http://www.springframework.org/schema/beans" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 6 xmlns:context="http://www.springframework.org/schema/context" 7 xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" 8 xsi:schemaLocation="http://www.springframework.org/schema/beans 9 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 10 http://www.springframework.org/schema/context 11 http://www.springframework.org/schema/context/spring-context-3.0.xsd 12 http://www.springframework.org/schema/aop 13 http://www.springframework.org/schema/aop/spring-aop-3.0.xsd 14 http://www.springframework.org/schema/tx 15 http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> 16 17 <!-- Transaction --> 18 <bean id="transactionManager" 19 class="org.springframework.jdbc.datasource.DataSourceTransactionManager" 20 p:dataSource-ref="dataSource"> 21 </bean> 22 <tx:annotation-driven /> 23 24 <!-- Data Source --> 25 <bean id="dataSource" 26 class="org.springframework.jdbc.datasource.DriverManagerDataSource"> 27 <!-- JDBCドライバクラス名の設定 --> 28 <property name="driverClassName"> 29 <value>com.mysql.jdbc.Driver</value> 30 </property> 31 <!-- JDBCの接続文字列の設定 --> 32 <property name="url"> 33 <value>jdbc:mysql://localhost/spring?useUnicode=true&amp;characterEncoding=UTF-8 34 </value> 35 </property> 36 <!-- MySQLのユーザIDの設定 --> 37 <property name="username"> 38 <value>root</value> 39 </property> 40 <!-- MySQLのパスワードの設定 --> 41 <property name="password"> 42 <value></value> 43 </property> 44 </bean> 45 46 <!-- MessageSource --> 47 <bean id="messageSource" 48 class="org.springframework.context.support.ResourceBundleMessageSource"> 49 <property name="basenames"> 50 <list> 51 <value>ApplicationResource</value> 52 </list> 53 </property> 54 </bean> 55</beans>

xml

1//appServlet-servlet.xml 2 3<?xml version="1.0" encoding="UTF-8"?> 4<beans xmlns="http://www.springframework.org/schema/beans" 5 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" 6 xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" 7 xsi:schemaLocation="http://www.springframework.org/schema/beans 8 http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 9 http://www.springframework.org/schema/mvc 10 http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd 11 http://www.springframework.org/schema/context 12 http://www.springframework.org/schema/context/spring-context-3.0.xsd"> 13 14 <mvc:annotation-driven /> 15 16 <!-- HandlerMapping --> 17 <bean 18 class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" /> 19 20 <context:component-scan base-package="controller,dao,logic" /> 21 22 <bean id="multipartResolver" 23 class="org.springframework.web.multipart.commons.CommonsMultipartResolver" 24 p:maxUploadSize="104857600" p:maxInMemorySize="10485760"> 25 </bean> 26 27 <bean class="org.springframework.jdbc.support.lob.DefaultLobHandler"></bean> 28 29 <!-- ViewResolver --> 30 <bean id="internalResourceViewResolver" 31 class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 32 <property name="viewClass"> 33 <value>org.springframework.web.servlet.view.JstlView</value> 34 </property> 35 <property name="prefix"> 36 <value>/WEB-INF/jsp/</value> 37 </property> 38 <property name="suffix"> 39 <value>.jsp</value> 40 </property> 41 </bean> 42</beans>

xml

1//web.xml 2 3<?xml version="1.0" encoding="Shift_JIS"?> 4<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 5 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 6 version="2.5"> 7 8 <filter> 9 <filter-name>CharacterEncodingFilter</filter-name> 10 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 11 <init-param> 12 <param-name>encoding</param-name> 13 <param-value>Shift_JIS</param-value> 14 </init-param> 15 <init-param> 16 <param-name>forceEncoding</param-name> 17 <param-value>true</param-value> 18 </init-param> 19 </filter> 20 <filter-mapping> 21 <filter-name>CharacterEncodingFilter</filter-name> 22 <url-pattern>/*</url-pattern> 23 </filter-mapping> 24 25 <listener> 26 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 27 </listener> 28 29 <servlet> 30 <servlet-name>appServlet</servlet-name> 31 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 32 <load-on-startup>1</load-on-startup> 33 </servlet> 34 35 <servlet-mapping> 36 <servlet-name>appServlet</servlet-name> 37 <url-pattern>*.html</url-pattern> 38 </servlet-mapping> 39 40</web-app>

xml

1//appServlet-servlet.xml 2 3 <!-- HandlerMapping --> 4 <bean 5 class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" /> 6 <context:component-scan base-package="controller,dao,logic" />

上記のxmlでクラス名からControllerを除き、すべて小文字にした文字列をurlにしています。

tomcatの設定ファイル 下記

xml

1//server.xml 2 3 <Context docBase="shopping" path="/app" reloadable="false" source="org.eclipse.jst.jee.server:shopping"/>

と指定しているので、

http://localhost:8080/app/item/index.html

にリクエストを出しても,404エラーが返ってきてしまいます。

public ModelAndView index()  の処理の中にエラーになるようなプログラムを書いてもエラーにならないので、Controller自体 動いていないと思います。

eclipseで @RequestMappings の確認で
リソースURL / 処理メソッド ItemController.index()
となっています。

原因がわからなかったので少しでもアドバイスいただけると助かります。

eclipse
springframework-version 3.1.1.RELEASE

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/10/15 01:34

そもそもコントローラ側でリクエストマッピングの指定(URL)がないのですが何を参考に作られましたか? >springframework-version 3.1.1.RELEASE さすがに3は古すぎるのでは。
m.ts10806

2020/10/15 01:53

いずれにしても index.html  と直接HTML参照するような仕組みにはなってないですね。
kokok

2020/10/15 01:55

@RequestMapping(value = "item/index.html", method = RequestMethod.GET) public ModelAndView index() 上記のようにでしょうか? 書籍を参考にしました Springによる Webアプリケーションスーパーサンプル第2版(2010,2012) そうですよね。 バージョンをあげても動作的には問題ないのでしょうか?
m.ts10806

2020/10/15 02:24

フレームワークだと通常拡張子を入れません。 通常は単にitemとだけし /item でアクセスするようにマッピングします。 >Springによる Webアプリケーションスーパーサンプル第2版 さすがに古いですね。覚えても使えないと思います。 Springは5.1系でWebだとSpring boot 2.3を使うことになります。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問