参考URL:
https://www.cnblogs.com/lnsylt/p/10258457.html
■目録
■環境設定
①pom.xml

1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 3 4 <modelVersion>4.0.0</modelVersion> 5 <groupId>cn.com.sy</groupId> 6 <artifactId>testspringmvc</artifactId> 7 <packaging>war</packaging> 8 <version>0.0.1-SNAPSHOT</version> 9 10 <!-- エンコード(UTF8)を指定 --> 11 <properties> 12 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 13 <spring.version>3.1.2.RELEASE</spring.version> 14 </properties> 15 16 <dependencies> 17 18 <!-- SpringMVCのJARを指定 --> 19 <dependency> 20 <groupId>org.springframework</groupId> 21 <artifactId>spring-webmvc</artifactId> 22 <version>${spring.version}</version> 23 </dependency> 24 25 <dependency> 26 <groupId>org.springframework</groupId> 27 <artifactId>spring-jdbc</artifactId> 28 <version>${spring.version}</version> 29 </dependency> 30 31 <dependency> 32 <groupId>org.springframework</groupId> 33 <artifactId>spring-context</artifactId> 34 <version>${spring.version}</version> 35 </dependency> 36 37 <dependency> 38 <groupId>org.springframework</groupId> 39 <artifactId>spring-aop</artifactId> 40 <version>${spring.version}</version> 41 </dependency> 42 43 <dependency> 44 <groupId>org.springframework</groupId> 45 <artifactId>spring-core</artifactId> 46 <version>${spring.version}</version> 47 </dependency> 48 49 <dependency> 50 <groupId>org.springframework</groupId> 51 <artifactId>spring-test</artifactId> 52 <version>${spring.version}</version> 53 </dependency> 54 55 <!-- WebファイルのJAR --> 56 <dependency> 57 <groupId>javax.servlet</groupId> 58 <artifactId>javax.servlet-api</artifactId> 59 <version>3.0.1</version> 60 <scope>provided</scope> 61 </dependency> 62 <dependency> 63 <groupId>javax.servlet</groupId> 64 <artifactId>jstl</artifactId> 65 <version>1.1.2</version> 66 <scope>provided</scope> 67 </dependency> 68 <dependency> 69 <groupId>javax.servlet.jsp</groupId> 70 <artifactId>javax.servlet.jsp-api</artifactId> 71 <version>2.3.1</version> 72 <scope>provided</scope> 73 </dependency> 74 75 <!-- ApacheのCommonsのJAR --> 76 <dependency> 77 <groupId>org.apache.commons</groupId> 78 <artifactId>commons-lang3</artifactId> 79 <version>3.3.2</version> 80 </dependency> 81 <dependency> 82 <groupId>commons-io</groupId> 83 <artifactId>commons-io</artifactId> 84 <version>2.4</version> 85 </dependency> 86 <dependency> 87 <groupId>org.apache.commons</groupId> 88 <artifactId>commons-collections4</artifactId> 89 <version>4.0</version> 90 </dependency> 91 <dependency> 92 <groupId>commons-logging</groupId> 93 <artifactId>commons-logging</artifactId> 94 <version>1.1.3</version> 95 </dependency> 96 <dependency> 97 <groupId>commons-codec</groupId> 98 <artifactId>commons-codec</artifactId> 99 <version>1.8</version> 100 </dependency> 101 <dependency> 102 <groupId>commons-beanutils</groupId> 103 <artifactId>commons-beanutils</artifactId> 104 <version>1.8.3</version> 105 </dependency> 106 <dependency> 107 <groupId>commons-chain</groupId> 108 <artifactId>commons-chain</artifactId> 109 <version>1.2</version> 110 </dependency> 111 <dependency> 112 <groupId>commons-fileupload</groupId> 113 <artifactId>commons-fileupload</artifactId> 114 <version>1.3.1</version> 115 </dependency> 116 <dependency> 117 <groupId>org.apache.commons</groupId> 118 <artifactId>commons-math3</artifactId> 119 <version>3.3</version> 120 </dependency> 121 <dependency> 122 <groupId>org.apache.commons</groupId> 123 <artifactId>commons-pool2</artifactId> 124 <version>2.2</version> 125 </dependency> 126 <dependency> 127 <groupId>org.apache.commons</groupId> 128 <artifactId>commons-digester3</artifactId> 129 <version>3.2</version> 130 </dependency> 131 <dependency> 132 <groupId>commons-net</groupId> 133 <artifactId>commons-net</artifactId> 134 <version>3.3</version> 135 </dependency> 136 <dependency> 137 <groupId>commons-dbutils</groupId> 138 <artifactId>commons-dbutils</artifactId> 139 <version>1.5</version> 140 </dependency> 141 <dependency> 142 <groupId>org.apache.commons</groupId> 143 <artifactId>commons-email</artifactId> 144 <version>1.3.3</version> 145 </dependency> 146 <dependency> 147 <groupId>commons-dbcp</groupId> 148 <artifactId>commons-dbcp</artifactId> 149 <version>1.4</version> 150 </dependency> 151 152 <!-- ログ出力のJAR --> 153 <dependency> 154 <groupId>log4j</groupId> 155 <artifactId>log4j</artifactId> 156 <version>1.2.16</version> 157 </dependency> 158 159 <dependency> 160 <groupId>org.slf4j</groupId> 161 <artifactId>slf4j-api</artifactId> 162 <version>1.7.5</version> 163 </dependency> 164 165 <!-- DataBase --> 166 <dependency> 167 <groupId>com.alibaba</groupId> 168 <artifactId>druid</artifactId> 169 <version>1.1.12</version> 170 </dependency> 171 172 <!-- json jar --> 173 <!-- <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-all</artifactId> <version>1.8.5</version> </dependency> --> 174 175 </dependencies> 176 </project>
②web.xml

1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance 3 http://www.springmodules.org/schema/cache/springmodules-cache.xsd 4 http://www.springmodules.org/schema/cache/springmodules-ehcache.xsd" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> 5 6 7 <display-name>Archetype Created Web Application</display-name> 8 9 <!--/WEB-INF/applicationContext.xml を導入(BeanのContainer) --> 10 <context-param> 11 <param-name>contextConfigLocation</param-name> 12 <param-value>classpath*:applicationContext.xml</param-value> 13 </context-param> 14 15 <!-- リスナーの設定 --> 16 <listener> 17 <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> 18 </listener> 19 20 <!-- 文字化けの設定 --> 21 <filter> 22 <filter-name>encodingFilter</filter-name> 23 <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> 24 <init-param> 25 <param-name>encoding</param-name> 26 <param-value>UTF-8</param-value> 27 </init-param> 28 </filter> 29 <filter-mapping> 30 <filter-name>encodingFilter</filter-name> 31 <url-pattern>/*</url-pattern> 32 </filter-mapping> 33 34 <!-- DispatcherServletを指定する --> 35 <servlet> 36 <servlet-name>springmvc</servlet-name> 37 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 38 <init-param> 39 <param-name>contextConfigLocation</param-name> 40 <!-- 拡張XMLを指定する「;」で区切り --> 41 <param-value>classpath*:/springmvc.xml</param-value> 42 </init-param> 43 <!-- <load-on-startup>1</load-on-startup> --> 44 </servlet> 45 46 <servlet-mapping> 47 <servlet-name>springmvc</servlet-name> 48 <!-- 請求URLに「*.do」を指定する、「"/"」を指定すると、すべての内容をインターセプトする(intercept) --> 49 <url-pattern>*.do</url-pattern> 50 </servlet-mapping> 51 52 </web-app>
注意:<web-app/>はVer.2.5以上を利用する必要
③「applicationContext.xml」はSpringの専用のXMLです。

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" 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.1.xsd 3 http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd 4 http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 5 http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd"> 6 7 <!-- Beanのパス(サブパスを含む)を検索 --> 8 <context:component-scan base-package="com.springdemo.service" /> 9 10 <!-- DB配置ファイル --> 11 <context:property-placeholder location="classpath:jdbc.properties" /> 12 13 <!-- データベースの設定 --> 14 <bean id="dataSource" 15 class="org.apache.commons.dbcp.BasicDataSource" 16 destroy-method="close" 17 p:driverClassName="${jdbc.driverClassName}" 18 p:url="${jdbc.url}" 19 p:username="${jdbc.username}" 20 p:password="${jdbc.password}" /> 21 22 <context:annotation-config /> 23 24 <!-- jdbcTemplateを導入 --> 25 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" p:dataSource-ref="dataSource" /> 26 27 <!-- 事務管理設定 --> 28 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 29 <property name="dataSource" ref="dataSource" /> 30 </bean> 31 32 <!-- 事務の設定(@Tranctional) --> 33 <tx:annotation-driven transaction-manager="txManager" /> 34 35 </beans>
④「springmvc.xml」はSpringMVCの専用XMLです。

1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans 3 http://www.springframework.org/schema/beans/spring-beans.xsd 4 http://www.springframework.org/schema/context 5 http://www.springframework.org/schema/context/spring-context.xsd 6 http://www.springframework.org/schema/tx 7 http://www.springframework.org/schema/tx/spring-tx.xsd 8 http://www.springframework.org/schema/mvc 9 http://www.springframework.org/schema/mvc/spring-mvc.xsd"> 10 11 <!-- コントローラのパス(サブパスを含む)を検索(@Controller、@Service) --> 12 <context:component-scan base-package="com.springdemo.*"> 13 <!-- 「@Service」を除外 --> 14 <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Service" /> 15 </context:component-scan> 16 17 <!-- HandlerMapper、HandlerAdapterを設定する(controller to controller) --> 18 <mvc:annotation-driven /> 19 20 <!-- 静的なファイルを導入(方法一) --> 21 <mvc:default-servlet-handler /> 22 23 <!-- 静的なファイルを導入(方法二) --> 24 <!-- <mvc:resources /> --> 25 26 <!-- JSON対応 開始 ([<mvc:annotation-driven />]と競合)--> 27 <!-- 28 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> 29 <property name="messageConverters"> 30 <list> 31 <ref bean="mappingJacksonHttpMessageConverter" /> 32 <ref bean="utf8StringHttpMessageConverter" /> 33 </list> 34 </property> 35 </bean> 36 <bean id="mappingJacksonHttpMessageConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter"> 37 <property name="supportedMediaTypes"> 38 <list> 39 <value>text/plain;charset=UTF-8</value> 40 <value>text/html;charset=UTF-8</value> 41 <value>application/json;charset=UTF-8</value> 42 </list> 43 </property> 44 </bean> 45 <bean id="utf8StringHttpMessageConverter" class="org.springframework.http.converter.StringHttpMessageConverter"> 46 <property name="supportedMediaTypes"> 47 <list> 48 <value>text/plain;charset=UTF-8</value> 49 <value>text/html;charset=UTF-8</value> 50 <value>application/json;charset=UTF-8</value> 51 </list> 52 </property> 53 </bean> 54 --> 55 <!-- JSON対応 終了 --> 56 57 <!-- 応対ファイルの形を設定、Root目録は「”/”」、拡張子は「.jsp」です。」 --> 58 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> 59 <property name="prefix" value="/"></property> 60 <property name="suffix" value=".jsp"></property> 61 </bean> 62 63 </beans>
⑤log4j.properties

#--------------------------------------------------------------------------------------- # Logger #--------------------------------------------------------------------------------------- # Root log4j.rootLogger=INFO,STDOUT, ROOT #--------------------------------------------------------------------------------------- # Appender #--------------------------------------------------------------------------------------- # for Root log4j.appender.ROOT=org.apache.log4j.ConsoleAppender log4j.appender.ROOT.Target=System.out log4j.appender.ROOT.layout=org.apache.log4j.PatternLayout log4j.appender.ROOT.layout.ConversionPattern=%-5p - %m%n # for SQL log4j.appender.STDOUT=org.apache.log4j.RollingFileAppender log4j.appender.STDOUT.File=C:/Users/LNSYLT/Tools/pleiades2018/log/STDOUT.log log4j.appender.STDOUT.Append=true log4j.appender.STDOUT.MaxFileSize=1MB log4j.appender.STDOUT.MaxBackupIndex=20 log4j.appender.STDOUT.layout=org.apache.log4j.PatternLayout log4j.appender.STDOUT.layout.ConversionPattern=%d %-5.12p [%C{2}][%F][%M(%L)] - %m%n
⑥jdbc.properties

#SET DB CONNECT jdbc.driverClassName="" jdbc.url="" jdbc.username="" jdbc.password=""
⑦DemoController.java

1 package com.springdemo.controller; 2 3 import javax.servlet.http.HttpServletRequest; 4 import javax.servlet.http.HttpServletResponse; 5 6 import org.apache.log4j.Logger; 7 import org.springframework.stereotype.Controller; 8 import org.springframework.web.bind.annotation.RequestMapping; 9 import org.springframework.web.servlet.mvc.support.RedirectAttributes; 10 11 /** 12 * クラス名(任意) <br/> 13 * 請求パス(”/demo”)を指定すれば、 配下関数の請求パス("/demo/xxxx.do")、「.do」はXMLにセットする 14 * 15 * @author LNSYLT 16 */ 17 @Controller 18 19 @RequestMapping(value = "/demo") 20 public class DemoController { 21 22 public Logger log = Logger.getLogger(this.getClass()); 23 24 /** 25 * 関数名(任意)<br/> 26 * クラスに請求パスを指定する場合、関数の請求方法は「"/demo/***.do"」です。 27 * クラスに請求パスを指定しない場合、関数の請求方法は「"***.do"」です。(唯一制御) 28 * 29 * @param req (任意) 30 * @param res (任意) 31 * @return 32 * @throws Exception 33 */ 34 @RequestMapping(value = "/login") 35 public String index(HttpServletRequest req, HttpServletResponse res) throws Exception { 36 log.info("index"); 37 //web.xmlにて、文字化けを対応すれば、下記の方法一、二は不要となる 38 // 画面エンコードを設定(方法一) 39 //res.setCharacterEncoding("UTF-8"); 40 // 画面エンコードを設定(方法二) 41 // res.setContentType("text/html;charset=UTF-8"); 42 43 String key = (String) req.getParameter("KEY"); 44 if (key != null && key.equals("val_index2forAttr")) { 45 log.info("このKEYは関数index2のAttrから戻る"); 46 log.debug("このKEYは関数index2のAttrから戻る"); 47 } 48 49 // 応答ファイル:”/jsp/login.jsp”、ファイルの拡張子(.jsp)はXMLにセットする 50 return "/jsp/login"; 51 } 52 53 @RequestMapping(value = "/login2") 54 public String index2(HttpServletRequest req, RedirectAttributes attr) { 55 log.info("index2"); 56 // 引き渡すパラメータを設定、このようにすれば、請求URLに「?KEY=XXX」で保持する 57 attr.addAttribute("KEY", "val_index2forAttr"); 58 59 // 再度請求URL、キー「"redirect:"」 60 return "redirect:/demo/login.do"; 61 } 62 }
注意:Controller⇒Controllerの方法は「return "redirect:/demo/login.do"」にする。
⑧index.jsp

1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 <!DOCTYPE html> 3 <html> 4 <head> 5 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 6 <title>Insert title here</title> 7 </head> 8 <body> 9 <div> 10 <h2>これは、初期化画面です。(http://localhost:8080/${pageContext.request.contextPath}/index.jsp)</h2> 11 </div> 12 </body> 13 </html>
⑨login.jsp

1 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2 <!DOCTYPE html> 3 <html> 4 <head> 5 <meta http-equiv="content-type" content="text/html; charset=UTF-8"> 6 <title>Insert title here</title> 7 </head> 8 <body> 9 <div> 10 <h2><%="これは、サーバ側に通信した結果です。(http://localhost:8080/${pageContext.request.contextPath}/demo/login.do)" %></h2> 11 ${KEY} 12 </div> 13 </body> 14 </html>