这两天在学习spring,哎,没办法呀,成都基本都是java,不喜欢学这个也没有用。多学点多条路。还得生活不是。

好了,言归正传,我这里记录下我搭建spring mvc的过程,其实过程不算太难,主要是开始我用的xml配置,后面改成java配置的(现在好像都倾向于java代码配置了),不知道什么时候丢了tomcat的配置,然后一直找不到controller,让我查了好几天。

搭建之前,需要安装maven且配置正确,我这里也没用的xml配置,用的java的配置。

一 创建spring mvc工程,我是基本maven骨架弄的。选的webapp这个。

二 配置pom.xml,增加一些依赖

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<spring.version>4.3.18.RELEASE</spring.version>
<spring.jdbc.version>5.2.0.RELEASE</spring.jdbc.version>
<mysql.connector.version>5.1.21</mysql.connector.version>
<servlet.version>3.0.1</servlet.version>
<jsp.version>2.2.1-b03</jsp.version>
<jstl.version>1.2</jstl.version>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency> <dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency> <dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>${servlet.version}</version>
</dependency> <dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>${jsp.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>${jstl.version}</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-test -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency> <dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.thymeleaf/thymeleaf-spring4 -->
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
<version>3.0.11.RELEASE</version>
</dependency> <!-- https://mvnrepository.com/artifact/org.springframework/spring-jdbc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.jdbc.version}</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.connector.version}</version>
</dependency> </dependencies>

三 创建项目目录结构,如下图

配置DispatcherServlet

初始化,继承AbstractAnnotationConfigDispatcherServletInitializer这个类,spring会自动检测到的。

package com.smartrui.common.config;

import org.springframework.web.filter.CharacterEncodingFilter;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer; import javax.servlet.Filter; public class Initializer extends AbstractAnnotationConfigDispatcherServletInitializer {
private static final String CHARACTER_ENCODING = "UTF-8"; private static final String DISPATCHER_SERVLET_MAPPING = "/"; @Override
protected Class<?>[] getRootConfigClasses() {
return new Class[]{WebAppConfig.class};
} @Override
protected Class<?>[] getServletConfigClasses() {
return null;
} @Override
protected String[] getServletMappings() {
return new String[]{DISPATCHER_SERVLET_MAPPING};
} @Override
protected Filter[] getServletFilters() {
CharacterEncodingFilter characterEncodingFilter = new CharacterEncodingFilter();
characterEncodingFilter.setEncoding(CHARACTER_ENCODING);
characterEncodingFilter.setForceEncoding(true);
return new Filter[] { characterEncodingFilter };
}
}

增加配置文件,需要添加几个注解 ,@EnableWebMvc, @Configuration,@ComponentScan,其中ComponentScan这里增加需要让spring注入的包。

package com.smartrui.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.view.InternalResourceViewResolver; @Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"com.smartrui.dao","com.smartrui.service","com.smartrui.controller"})
public class WebAppConfig extends WebMvcConfigurerAdapter { @Override
public void addResourceHandlers( ResourceHandlerRegistry registry) {
super.addResourceHandlers(registry);
registry.addResourceHandler("/img/**").addResourceLocations("/img/"); } @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();
} }

五 写一个controller入口

package com.smartrui.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod; import java.util.ArrayList;
import java.util.List; @Controller
@RequestMapping("/home")
public class HomeController { @RequestMapping("/hello")
public String hello(Model model){
List<String> s = new ArrayList<>();
s.add("1");
s.add("2");
model.addAttribute("mystr", s);
return "hello"; //返回视图名 web-info/views/hello.jsp
} @RequestMapping(value="/user/{id}",method= RequestMethod.GET)
public String show(@PathVariable("id") long id,Model model) {
//接受参数测试 /home/user/33
model.addAttribute("id",id);
return "hello";
} @RequestMapping("/welcome")
public String welcome(){ return "welcome"; //返回视图名 web-info/views/welcome.html
} }

六 配置 tomcat

这里那个Deploy at the server startup这里要注意配置下,我开始从xml配置换成java配置的时候,这里配置没了。然后就一直找不到controller。

配置完后,点运行,如果没问题,在浏览器输入 http://localhost:8080/home/hello 应该就能显示了.

这里只是一个基本的环境配置,像数据库,模板什么的都没有配置,这些后续慢慢配置吧.

spring web mvc环境搭建的更多相关文章

  1. Spring MVC 环境搭建(二)

    在Spring MVC 环境搭建(一)中我们知道 spring 的配置是通过 urlmapping 映射到控制器,然后通过实现Controller接口的handlerequest方法转向页面. 但这存 ...

  2. Spring MVC 环境搭建(一)

    一.建立 JavaWeb 项目 1.建立一个 Java 项目. 2.在项目下新建一个文件夹 webapp (命名可自取,这个目录即是网站根目录),再在该文件夹下新建一个 WEB-INF 文件夹(命名固 ...

  3. Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker)

    Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomc ...

  4. 菜鸟学习Spring Web MVC之一

    ---恢复内容开始--- 当当当!!沉寂两日,学习Spring Web MVC去了.吐槽:近日跟同行探讨了下,前端攻城师,左肩担着设计师绘图,右肩担着JAVA代码?!我虽设计过UI,但这只算是PS技巧 ...

  5. 菜鸟学习Spring Web MVC之二

    有文章从结构上详细讲解了Spring Web MVC,我个菜鸟就不引据来讲了.说说强悍的XP环境如何配置运行环境~~ 最后我配好的环境Tomcat.Spring Tool Suites.Maven目前 ...

  6. Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

    之前有一篇<5分钟构建spring web mvc REST风格HelloWorld>介绍了普通方式开发spring web mvc web service.接下来看看使用spring b ...

  7. [转]Spring Boot——2分钟构建spring web mvc REST风格HelloWorld

    Spring Boot——2分钟构建spring web mvc REST风格HelloWorld http://projects.spring.io/spring-boot/ http://spri ...

  8. Spring Web MVC 笔记

    Spring Web MVC 流程 Dispatcher Servlet 这是一个前端分派 Servlet(前端控制器模式),外部所有的请求都会先到达这里,然后由其将请求分派给其他组件进行实际的处理. ...

  9. Spring官方文档翻译——15.1 介绍Spring Web MVC框架

    Part V. The Web 文档的这一部分介绍了Spring框架对展现层的支持(尤其是基于web的展现层) Spring拥有自己的web框架--Spring Web MVC.在前两章中会有介绍. ...

随机推荐

  1. 关于 Comparable 的使用

    作为一名刚上路的超初级程序员,今天终于可以迈开自己的第一步,写一篇博客.把我自己都感动哭了. 今天看面试题时看到了一个Comparable 的使用,才发现自己好像并没有使用过这个接口,具体这个接口是怎 ...

  2. leetcode-二叉树

    树以及常用的算法 树的概念 树(Tree)的基本概念树是由结点或顶点和边组成的(可能是非线性的)且不存在着任何环的一种数据结构.没有结点的树称为空(null或empty)树.一棵非空的树包括一个根结点 ...

  3. (转)RocketMQ工作原理

    原文:https://blog.csdn.net/lyly4413/article/details/80838716 1.消息中间件的发展: 第一代以ActiveMQ为代表,遵循JMS(java消息服 ...

  4. 清新水彩追梦在路上述职报告通用PPT模板

    清新漫画风,轻松可爱模版来源:  http://ppt.dede58.com/gongzuohuibao/26566.html

  5. ES6变量的解构赋值(一)数组的解构赋值

    let[a,...arr]=[1,2,3,4];//a==>1 arr==>[2,3,4] let [x, y, ...z] = ['a'];//a==>'a' y==>und ...

  6. Gaussian field consensus论文解读及MATLAB实现

    Gaussian field consensus论文解读及MATLAB实现 作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/ 一.Introduction ...

  7. 使用python对整个网页进行截图

    方法一.使用PyQt4的QtWebKit组件 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 ...

  8. 《Web Development with Go》写一个简单的LoggingMiddleware

    main.go package main import ( "fmt" "log" "net/http" "time" ...

  9. Less(4)

    1.先判断注入类型 (1)首先看到要求,要求传一个ID参数,并且要求是数字型的:?id=1 (2)再输入?id=1' 界面无变化 (3)再输入?id=1'' 界面还是无变化, (4)再输入?id=1 ...

  10. 在Ubuntu环境下配置Proxmark3(PM3)使用环境

    参考资料:PM3官方Wiki 因为国内网络上大多是在Kali系统上使用PM3的教程(链接1.链接2.链接3),而这些教程的步骤对于Ubuntu系统并不完全适用.所以写下本文,记录我个人的安装经历. 本 ...