spring mvc:练习:javaConfig配置和注解

 Spring4 MVC HelloWorld 注释/JavaConfig为示例,一步一步以简单的方式学习Spring4 MVC 的注解,项目设置,代码,部署和运行。

我们已经使用XML配置开发了一个Hello World Web应用程序。但是,XML不是配置Spring应用程序的唯一途径。或者,我们可以使用Java配置来配置应用程序.

我们将再次创建一个Hello world的例子,但这个时候我们使用Java配置。 我们将删除上面提到的XML文件,并通过它们对应的Java替换这些XML配置。

目录结构:

访问路径是:http://localhost:8080/gugua5/

包名:springmvc

HelloController.java

package springmvc.controller;

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
@RequestMapping(value="/")
public class HelloWorldController {

	
	@RequestMapping(method=RequestMethod.GET)
	public String sayHello(ModelMap model)
	{
		
		model.addAttribute("greeting", "hello world from spring mvc 4");
		return "hello_say";
	}
	
	
	@RequestMapping(value="/helloagain", method=RequestMethod.GET)
	public String sayHelloAgain(ModelMap model)
	{
		model.addAttribute("greeting", "hello world again, spring mvc 4");
		return "hello_say";
	}
}

  

配置jsp视图路径,以及包下的controller/bean等自动引入,webmvc开启

package springmvc.configuration;

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.EnableWebMvc;

import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="springmvc")
public class HelloWorldConfiguration {

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

  

初始化WebApplicationInitializer

可以用AbstractAnnotationConfigDispatcherServletInitializer 来替代WebApplicationInitializer

package springmvc.configuration;

import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;

public class HelloWorldInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

	@Override
	protected Class<?>[] getRootConfigClasses() {
		// TODO Auto-generated method stub
		return new Class[] { HelloWorldConfiguration.class };
	}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		// TODO Auto-generated method stub
		return null;
	}

	@Override
	protected String[] getServletMappings() {
		// TODO Auto-generated method stub
		return new String [] { "/" };
	}

}

  

jsp:

<%@ page language="java" contentType="text/html; charset=utf-8"  pageEncoding="utf-8"%>
<%@ page isELIgnored="false" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>javaconfiguration</title>
</head>
<body>


${greeting} 

</body>
</html>

  

我们来说一说pom.xml配置

以 Spring Java为基础的配置取决于Servlet 3.0 的API, 因此,我们需要包含的依赖在 pom.xml 中。

<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">
  <modelVersion>4.0.0</modelVersion>
  <groupId>gugua4</groupId>
  <artifactId>gugua5</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>gugua5 Maven Webapp</name>
  <url>http://maven.apache.org</url>
  
  
   <properties>
  	<springVersion>4.3.5.RELEASE</springVersion>
  	<hibernate.validator>5.1.2.Final</hibernate.validator> <!-- hibernate.validator -->
  	<javax.validation>1.1.0.Final</javax.validation> <!--  JSR303 的验证注解 -->
  	<mysqlVersion>5.0.11</mysqlVersion>
  	<commonsDbcpVersion>1.4</commonsDbcpVersion>
  	<aspectjweaverVersion>1.8.13</aspectjweaverVersion>
  	<commonsLoggingVersion>1.2</commonsLoggingVersion>
  </properties>
  
  <dependencies>
  
     <!-- spring-test支持 -->
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-test</artifactId>
    	<version>${springVersion}</version>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.11</version>
      <scope>test</scope>
    </dependency>
    
    
    <!-- spring模块库 -->
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-beans</artifactId>
    	<version>${springVersion}</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-jdbc</artifactId>
    	<version>${springVersion}</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-web</artifactId>
    	<version>${springVersion}</version>
    </dependency>
    <dependency>
    	<groupId>org.springframework</groupId>
    	<artifactId>spring-webmvc</artifactId>
    	<version>${springVersion}</version>
    </dependency>    
    <dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-expression</artifactId>
	    <version>${springVersion}</version>
	</dependency>
	
	
	<!-- (aop)@Aspect注解及代理 -->
	<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
	<dependency>
	    <groupId>org.aspectj</groupId>
	    <artifactId>aspectjweaver</artifactId>
	    <version>1.6.8</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/cglib/cglib-nodep -->
	<dependency>
	    <groupId>cglib</groupId>
	    <artifactId>cglib-nodep</artifactId>
	    <version>2.1_3</version>
	</dependency>
    
    
    <!-- 依赖的持久化类库 -->
    <dependency>
    	<groupId>mysql</groupId>
    	<artifactId>mysql-connector-java</artifactId>
    	<version>5.1.8</version>
    </dependency> 
	<!-- https://mvnrepository.com/artifact/org.springframework/spring-tx -->
	<dependency>
	    <groupId>org.springframework</groupId>
	    <artifactId>spring-tx</artifactId>
	    <version>3.0.5.RELEASE</version>
	</dependency>
	
    
    <!-- io流/上传类插件 -->
	<!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
	<dependency>
	    <groupId>commons-io</groupId>
	    <artifactId>commons-io</artifactId>
	    <version>2.5</version>
	</dependency>
	<!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
	<dependency>
	    <groupId>commons-fileupload</groupId>
	    <artifactId>commons-fileupload</artifactId>
	    <version>1.3.2</version>
	</dependency>
    
    
     <!-- 连接池 -->
    <dependency>
    	<groupId>commons-dbcp</groupId>
    	<artifactId>commons-dbcp</artifactId>
    	<version>${commonsDbcpVersion}</version>
    </dependency>
    
    <!-- 公共基础类(字符处理,数组,日期,范围) -->   
	<dependency>
	    <groupId>org.apache.commons</groupId>
	    <artifactId>commons-lang3</artifactId>
	    <version>3.0</version>
	</dependency>
	
	
	 <!-- jsp依赖的web模块库 -->	    
	 <dependency>
	   <groupId>javax.servlet</groupId>
	   <artifactId>jsp-api</artifactId>
	   <version>2.0</version>
	   <scope>provided</scope>
	</dependency>
	<dependency>  
         <groupId>javax.servlet</groupId>  
         <artifactId>jstl</artifactId>  
         <version>1.2</version>  
         <scope>runtime</scope>  
    </dependency>  
    <dependency>
         <groupId>taglibs</groupId>
         <artifactId>standard</artifactId>
         <version>1.1.2</version>
     </dependency>
    
    <!-- servlet(HttpServletRequest,HttpServletResponse) -->	    
    <dependency>
	    <groupId>javax.servlet</groupId>
		<artifactId>javax.servlet-api</artifactId>
		<version>3.1.0</version>
	    <!--  
	    <artifactId>servlet-api</artifactId>
	    <version>2.5</version>
	    <scope>provided</scope>
	    -->	    
	</dependency>
	
	
	<!-- jsr303 validation dependencies/ JSR303 的验证注解-->
		<dependency>
			<groupId>javax.validation</groupId>
			<artifactId>validation-api</artifactId>
			<version>${javax.validation}</version>
		</dependency>
		<!-- hibernate validation 数据验证-->
		<dependency>
			<groupId>org.hibernate</groupId>
			<artifactId>hibernate-validator</artifactId>
			<version>${hibernate.validator}</version>
		</dependency>
    
    
  </dependencies>
  
  
  
  <build>
  <!-- javaConfig配置 -->
  	<pluginManagement>
  		<plugins>
  			<plugin>
  				<groupId>org.apache.maven.plugins</groupId>
  				<artifactId>maven-war-plugin</artifactId>
  				<version>2.6</version>
  				<configuration>
  					<!-- jsp目录 -->
  					<warSourceDirectory>src/main/webapp</warSourceDirectory>
  					<warName>gugua5</warName>
  					<!-- 取消xml配置:web.xml -->
  					<failOnMissingWebXml>false</failOnMissingWebXml>
  				</configuration>
  			</plugin>
  		</plugins>
  	</pluginManagement>
    <finalName>gugua5</finalName>
  </build>
  
 
  
</project>

  

重点是此段代码:

<build>
  <!-- javaConfig配置 -->
  	<pluginManagement>
  		<plugins>
  			<plugin>
  				<groupId>org.apache.maven.plugins</groupId>
  				<artifactId>maven-war-plugin</artifactId>
  				<version>2.6</version>
  				<configuration>
  					<!-- jsp目录 -->
  					<warSourceDirectory>src/main/webapp</warSourceDirectory>
  					<warName>gugua5</warName>
  					<!-- 取消xml配置:web.xml -->
  					<failOnMissingWebXml>false</failOnMissingWebXml>
  				</configuration>
  			</plugin>
  		</plugins>
  	</pluginManagement>
    <finalName>gugua5</finalName>
  </build>

  

猜你喜欢

转载自www.cnblogs.com/achengmu/p/9081443.html