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

 

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

@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值映射到當前參數中java

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>

 導入靜態資源:

在WEB-INF中,直接粘貼boostrap的標準資源,並新建一個views文件夾,將index.jsp拉進去,將本身寫的Login.jsp(想要示例的登錄頁面的話在本文的最下面有個github地址能夠去下載)複製進去,效果以下:git

java文件夾下結構以下:github

建立SpringConfig類(如配置文件通常):

新建一個SpringConfig的類,繼承WebMvcConfigurerAdapter,而且配置一些必要的方法web

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");
    }
}

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

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

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);
    }
}

添加Controller:

新建一個LoginController類apache

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運行便可api

相關文章
相關標籤/搜索