构建完全的注解版的springMVC应用

这一次讲解如何构建一个简单的Spring MVC应用。

包含的技术有spring mvc中的表单提交,利用ajax的方法来和springmvc通讯两个内容。

涉及ajax的是和user有关的文件。

应用环境是IDEA,当然Eclipse也是可以的。整个项目的环境是Maven+Spring4.3。

祭出文件目录图:

构建完全的注解版的springMVC应用_第1张图片

首先看一下pom.xml核心部分jar包的配置。


    
    
        junit
        junit
        4.12
    

    
    
    
        org.hamcrest
        hamcrest-all
        1.3
        test
    
    
    
        org.springframework
        spring-context
        4.3.18.RELEASE
    
    
    
        org.aspectj
        aspectjrt
        1.9.1
    
    
    
        org.springframework
        spring-webmvc
        4.3.18.RELEASE
    
    

    
    
        javax.servlet
        javax.servlet-api
        3.1.0
        provided
    
    
        org.junit.jupiter
        junit-jupiter-api
        RELEASE
        compile
    

    
    
    
        jstl
        jstl
        1.2
    
    

    
    
        org.json
        json
        20180130
    

    
    
    
        com.fasterxml.jackson.core
        jackson-core
        2.9.6
    
    
    
        com.fasterxml.jackson.core
        jackson-annotations
        2.9.6
    
    
    
        com.fasterxml.jackson.core
        jackson-databind
        2.9.6
    
    

然后看一下 java/config 目录下的三个文件

这些是Spring MVC的基本配置文件

RootConfig.java

package config;

public class RootConfig {


}
WebAppInitializer.java
package config;

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

public class WebAppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

    @Override
    protected Class[] getRootConfigClasses() {
        return new Class[] { RootConfig.class };
    }

    @Override
    protected Class[] getServletConfigClasses() {
        return new Class[] { WebConfig.class };
    }

    @Override
    protected String[] getServletMappings() {
        return new String[] { "/" };
    }
}
WebConfig.java
package config;

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 // 启用spring mvc
@ComponentScan("web") // 启用组件扫描
class WebConfig extends WebMvcConfigurerAdapter {

    /**
     * 配置是解析器
     * @param
     * @return org.springframework.web.servlet.ViewResolver
     **/
    @Bean
    public ViewResolver viewResolver() {
        InternalResourceViewResolver resolver = new InternalResourceViewResolver(); // 配置jsp视图解析器
        resolver.setPrefix("WEB-INF/views/"); // 这里是前缀
        resolver.setSuffix(".jsp"); // 这里是后缀
        resolver.setExposeContextBeansAsAttributes(true);
        return resolver;
    }

    /**
     * 配置静态资源的处理
     * @param configurer
     * @return void
     **/
    @Override
    public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
        configurer.enable();
    }

}

接下来看一下Model层的文件

User.java

package model;

/**
 * @author ChenZhiMing
 * @date 2018/8/5 14:22
 */

public class User {

    private String name;
    private int age;

    public User() {

    }

    public User(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void setName(String name) {
        this.name = name;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

接下来配置一下控制器,也就是Controller

HomeController.java

package web;

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

@Controller
public class HomeController {

    @RequestMapping(value = "/", method = RequestMethod.GET)
    public String home() {
        return "home";
    }

}

InputController.java

package web;

import model.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

@Controller
public class InputController {

    @RequestMapping(value = "/input", method = RequestMethod.GET)
    public String getInput() {
        return "input";
    }

    @RequestMapping(value = "/input", method = RequestMethod.POST)
    public String getInputForm(User user, Model model) {
        System.out.println("name: " + user.getName() + ", age: " + user.getAge());
        model.addAttribute(user);
        return "success";
    }

}
UserController.java
package web;

import model.User;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

@Controller
public class UserController {

    @RequestMapping(value = "/userInfo", method = RequestMethod.GET)
    public String getUserInfo() {
        return "userInfo";
    }

    @RequestMapping(value = "/getJson", method = RequestMethod.POST)
    @ResponseBody
    public User function(@RequestBody User user) {
        System.out.println(user);
        return user;
    }

    public static void main(String[] args) {
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("name", "jane");
        jsonObject.put("age", 12);
        System.out.println(jsonObject.toString());
    }

}

最后在看一下WEB-INF/views中的视图文件

home.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


welcome

input.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>


    Title


success.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false" %>


    Title


input success

name:
age: ${user.age}

userInfo.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<%@ page isELIgnored="false" %>



    
    
    
    Document
    
    




下面来看一下实际效果图

构建完全的注解版的springMVC应用_第2张图片

构建完全的注解版的springMVC应用_第3张图片

构建完全的注解版的springMVC应用_第4张图片

构建完全的注解版的springMVC应用_第5张图片

构建完全的注解版的springMVC应用_第6张图片

 

 

你可能感兴趣的:(SpringMvc)