通过Java文件来配置SpringMVC

笔者最近在学习《Spring in action》这本书,在这里呢,和大家分享一下我的学习心得和学习内容,和大家一同进步。

大多数的开发者都是比较喜欢使用xml来配置spring,但是由于我对代码有一定的强迫症,所以我在这边和大家分享一下如何使用纯Java来配置Java项目。

在这里,笔者见使用maven来管理项目依赖包,并采用我们的Java配置类来代替spring-context.xml。(但是由于web项目的限制,web.xml这个文件不能够删除,所以这边我们只能是选择放空)。

一、开发环境及环境的配置

(1)Eclipse Java EE IDE for Web Developers.(该软件可以在Eclipse的官网上下载到:eclipse下载官网
(2)maven 3.1.0  (由于我们这边主要是讲SpringMVC,所以maven的配置大家可以参考这篇文章:Maven在Eclipse中的配置

二、建立maven web项目

在Eclipse中使用file->new project ->other->maven project项目,出现以下的界面,大家可以按以下图片来选择maven web项目。


接下来就是对项目的命名,大家可以参考以下图片的提示来创建。


建立好项目以后大家可能会遇到以下的错误(如果没有遇到的同学可以直接跳过这一步)


出现这种错误主要是因为web项目在在它的Java build path配置里找不到我们的服务器,所以我们只需要是在Java build path配置中添加Tomcat服务器(或者是你的其他的服务器)


三、对maven web项目配置SpringMVC环境

1、编辑pom.xml文件使用maven来引入项目依赖包

(1)spring核心框架依赖包为:spring-core、spring-beans;SpringMVC则还需要spring-mvc、spring-web;
(2)另外我们还需要使用spring的标记(用来测试用的):spring-context、spring-context-suport、spring-test;
(3)以及我们的日志输出依赖包:commons-logging
主要是依赖大家可以在一下图片中对应去添加:



2、添加Java配置文件

(1)首先我需要建立一个用来存放配置文件的config包,我饿把这个包放在目录src/main/java下,具体如下图:



(2)首先我们需要建立一个Java配置类WebAppInitialzer.java,这个类主要是用来拉动spring项目,这个类的作用就相当于xml配置文件spring-context.xml配置文件的功能。那么为什么Spring web项目运行初始化为什么就会加在这个配置文件这,这个主要是因为WebAppInitialzer继承自AbstractAnnotationConfigDispatcherServletInitializer这个类。WebAppInitialzer类的内容具体如下:
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;


import indi.tangkai.jpa.config.RootConfig;
import indi.tangkai.jpa.config.WebConfig;  
  
public class WebAppInitializer 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 };
	}
}

大家可能会很奇怪这个RootConfig以及WebConfig两个类是什么,这个我们会在接下来的文章中说道,这两个类也是我们配置文件的关键配置。而getServletMappings返回一个String列表,而我们这边返回的参数表示的是监听URL下的所有请求。

(3)WebConfig的内容如下,主要是用来配置DispatcherServlet。对于文件中的东西我们在代码中也会给出相应的解释。
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;


@Configuration
@EnableWebMvc
@ComponentScan(basePackages={"indi.tangkai.jpa"})
public class WebConfig extends WebMvcConfigurerAdapter {
	
	//配置JSP视图解析器
	@Bean
	public ViewResolver viewResolver()
	{
		InternalResourceViewResolver resolver=new InternalResourceViewResolver();
		resolver.setPrefix("/WEB-INF/views/");
		resolver.setSuffix(".jsp");
		resolver.setExposeContextBeansAsAttributes(true);
		return resolver;
	}
	
	//配置静态资源的处理
	@Override
	public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer)
	{
		configurer.enable();
	}


}

(4)编写RootConfig.java的内容如下,主要是用来配置spring的bean。

import org.springframework.context.annotation.ComponentScan;  
import org.springframework.context.annotation.Configuration;  
import org.springframework.context.annotation.FilterType;  
import org.springframework.web.servlet.config.annotation.EnableWebMvc;  

@Configuration
@ComponentScan(basePackages={"indi.tangkai.orderlist"},excludeFilters=
{@ComponentScan.Filter(type=FilterType.ANNOTATION,value=EnableWebMvc.class)}) 
public class RootConfig {

}

(5)声明一个控制器OrderListController,来控制请求的转发。文件中的意思是将“/homepage”的请求返回home的字符串,然后我们的SpringMVC会结合之前的webConfig类的配置在WEB-INF/views目录下的home.jsp文件。
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

//声明控制器
@Controller
@RequestMapping({"/", "/homepage"})

public class OrderListController {
	
	@RequestMapping(method = RequestMethod.GET)
	public String home()
	{
		return "hello SpringMVC!";
	}
}

(6)到这边,我们的所有配置都基本结束了,大家可以根据自己的项目作出一些必要的修改。接下来我们需要,建立一个home.jsp文件,也即显示页面。文件是放在WEB-INF/views目录下。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>

<!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=ISO-8859-1">

<title>OrderList</title>
</head>
<body>
	hello SpringMVC!<br>
</body>
</html>

四、运行结果

到了这一步,我们的整个工程就已经是基本完成,如果你想页面更好看点,可以将页面写的更加的复杂。接下来,我们就是把我们的代码放到服务器上去跑。具体的操作如下:



运行结果如下:









  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值