使用IDEA搭建一個Spring + Spring MVC 的Web項目(零配置文件)


話不多說,直接上代碼:

注解是Spring的一個構建的一個重要手段,減少寫配置文件,下面解釋一下一些要用到的注解:

@Configuration 作用於類上面,聲明當前類是一個配置類(相當於一個Spring的xml文件)
@ComponentScan(“xxx”) 作用於類上面,自動掃描xxx包名下所有使用@Service、@Component、@Repository和@Controller的類,並注冊為Bean
@Bean 作用與類和方法上,相當於Spring配置文件bean節點
@EnableWebMvc 作用於類,開啟一些默認配置,如一些ViewResolver或者MessageConverter
@RequestMapping 作用於類、方法,配置URL和方法之間的映射
@RequestBody 作用於參數前,允許request的參數在request體中,而不是在直接鏈接在地址后面
@ResponseBody 作用於返回值、方法上,支持將返回值放在response體中,而不是返回一個頁面。
@RequestParam 作用於參數前,將form的對應name值映射到當前參數中。

項目的創建這里就省略啦........

pom.xml配置文件:

<?xml version="1.0" encoding="UTF-8" ?>
<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/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <!--組織名-->
    <groupId>com.oukele.hellowrod</groupId>
    <!--項目名-->
    <artifactId>HelloWord</artifactId>
    <!--項目版本信息-->
    <version>1.0-SNAPSHOT</version>
    <!--項目類型-->
    <packaging>war</packaging>

    <!--依賴管理-->
    <dependencies>
        <!--spring 的依賴-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>5.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>5.1.3.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.1.3.RELEASE</version>
        </dependency>
        <!--spring mvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.1.3.RELEASE</version>
        </dependency>
        <!--java servlet -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>
    </dependencies>

</project>
View Code

導入靜態資源:

在WEB-INF中,直接粘貼boostrap的標准資源,並新建一個views文件夾,將index.jsp拉進去,將自己寫的Login.jsp(想要示例的登陸頁面的話在本文的最下面有個github地址可以去下載)復制進去,效果如下(順便刪了web.xml): 

 

java文件夾下面的目錄結構

創建SpringConfig類(類似配置文件):

 新建類SpringConfig類,繼承WebMvcConfigurerAdapter,並配置一些必要的方法。

package com.oukele.spring;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import org.springframework.web.servlet.view.JstlView;

@Configuration//聲明當前類是一個配置類(類似於 spring_xxx.xml 的文件)
@EnableWebMvc//若無此注解,WebMvcConfigurerAdapter無效
@ComponentScan//自動掃描spring注解 比如@Service、@Component、@Repository和@Controller的類,並注冊為Bean
public class SpringConfig extends WebMvcConfigurerAdapter {

    //添加一個ViewResolver解析view
    @Bean//相當於Spring配置文件bean節點
    public InternalResourceViewResolver viewResolver(){
        InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
        viewResolver.setPrefix("/WEB-INF/views/");
        viewResolver.setSuffix(".jsp");
        viewResolver.setViewClass(JstlView.class);
        return viewResolver;
    }
    //注冊靜態資源,沒注冊的話,網站是訪問不了的
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        registry.addResourceHandler("/css/**").addResourceLocations("/WEB-INF/css/");
        registry.addResourceHandler("/js/**").addResourceLocations("/WEB-INF/js/");
        registry.addResourceHandler("/fonts/**").addResourceLocations("/WEB-INF/fonts/");
    }
    //根目錄的時候直接跳轉到登錄界面
    @Override
    public void addViewControllers(ViewControllerRegistry registry) {
        registry.addViewController("/").setViewName("Login");
    }
}

 與xml配置對比:

創建WebInit類(web.xml配置文件):

  在 WebInit類中實現 WebApplicationInitializer接口 並實現方法,方法的內容如下:

package com.oukele.spring;

import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;

public class WebInit implements WebApplicationInitializer {
    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
        ctx.register(SpringConfig.class);
        ctx.setServletContext(servletContext);
        ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcher",new DispatcherServlet(ctx));
        dynamic.addMapping("/");
        dynamic.setLoadOnStartup(1);
    }
}

 

web.xml文件 與  WebInit 類 的對比:

new DispatcherServlet(ctx); --> 在上寫文中注冊Spring配置文件,添加到DispatcherServlet上下文中。

添加Controller:

新建一個LoginController類。

package com.oukele.spring.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class LoginController {
    @RequestMapping("/login")
    public String login(@RequestParam("username") String username, @RequestParam("pwd") String pwd) {
        String forword = null;
        if (username.equals("oukele") && pwd.equals("oukele")) {
            forword = "index";//登錄成功跳轉到index.jsp
        } else {
            System.out.println("no such user");
            forword = "Login";//登錄失敗跳轉到Login.jsp繼續登錄操作
        }
        return forword;
    }

}

添加Tomcat,運行:

這里已經設置根目錄是Login.jsp頁面。

運行結果:

到這里就結束啦。

本次演示代碼地址:https://github.com/oukele/spring-spring-mvc-web_demo


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM