spring4.3 web-MVC搭建

简介: spring4.3 web-MVC搭建

一、基本配置

  1. 配置 DispatcherServlet
package com.hj.myapp.config;

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

public class MyAppInitializer 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[] {"/"};
    }

}
  1. Spring MVC配置
package com.hj.myapp.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
@ComponentScan("com.hj.myapp.web")
public class WebConfig extends WebMvcConfigurerAdapter {

    @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();
    }
}
  1. RootConfig配置
package com.hj.myapp.config;

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

@Configuration
@ComponentScan(basePackages={"com.hj.myapp"}, excludeFilters={@Filter(type=FilterType.ANNOTATION, value=EnableWebMvc.class)})
public class RootConfig {
}

实体类

package com.hj.myapp.entries.user;

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class User {

    @NotNull
    @Size(min=4, max=10, message="{longName.size}")
    private String loginName;
    
    @NotNull
    @Size(min=2, max=10, message="{userName.size}")
    private String userName;
    
    @NotNull
    @Size(min=1, max=30, message="{address.size}")
    private String address;
    
    public String getLoginName() {
        return loginName;
    }

    public void setLoginName(String loginName) {
        this.loginName = loginName;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return userName+","+address;
    }

}

接口

package com.hj.myapp.dao.interfaces;

import com.hj.myapp.entries.user.User;

public interface UserDao {

    boolean save(User user);
    User findByLoginName(String loginName);
    boolean remove(User user);
    boolean userExist(User user);
}

接口实现类

package com.hj.myapp.dao.fileimpl.user;

import java.util.HashMap;
import java.util.Map;

import org.springframework.stereotype.Component;

import com.hj.myapp.dao.interfaces.UserDao;
import com.hj.myapp.entries.user.User;

@Component
public class UserDaoImpl implements UserDao {

    private Map<String, User> map = new HashMap<String, User>();

    @Override
    public boolean save(User user) {
        map.put(user.getLoginName(), user);
        return true;
    }

    @Override
    public User findByLoginName(String loginName) {
        return map.get(loginName);
    }

    @Override
    public boolean remove(User user) {
        return map.remove(user.getLoginName(), user);
    }
    
    @Override
    public boolean userExist(User user){
        return map.containsKey(user.getLoginName());
    }

}

控制器

Home控制器

package com.hj.myapp.web;

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

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

稍微复杂点的控制器

package com.hj.myapp.web;

import javax.validation.Valid;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.Errors;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.hj.myapp.dao.interfaces.UserDao;
import com.hj.myapp.entries.user.User;

@Controller
@RequestMapping(value="/user")
public class UserController {

    @Autowired
    private UserDao userDao;
    
    @RequestMapping(value="/register")
    public String showRegisterForm(Model model){
        model.addAttribute(new User());
        return "user/registerForm";
    }
    
    @RequestMapping(value="/register", method={RequestMethod.POST})
    public String register(@Valid User user, Errors result){
        if(result.hasErrors()){
            return "user/registerForm";
        }
        userDao.save(user);
        return "redirect:profile/" + user.getLoginName();
    }
    
    @RequestMapping("/profile/{loginName}")
    public String profile(@PathVariable(value="loginName", required=true) String loginName, Model model){
        User user = userDao.findByLoginName(loginName);
        model.addAttribute("user", user);
        return "user/profile";
    }
}

视图

注册

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"    prefix="c" %>
<%@ taglib uri="http://www.springframework.org/tags/form" prefix="sf" %>
<!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=UTF-8">
<title>注册</title>
</head>
<body>
    <h1 style="text-align: center">注册</h1>
    <sf:form method="post" commandName="user">
        <sf:errors element="div" path="*" />
        <div style="width: 40%; text-align: center">
            <table>
                <tr>
                    <td>登录名</td>
                    <td><sf:input path="loginName"/></td>
                </tr>
                <tr>
                    <td>真实名</td>
                    <td><sf:input path="userName"/></td>
                </tr>
                <tr>
                    <td>地址</td>
                    <td><sf:textarea path="address" cols="5" rows="5"/> </td>
                </tr>
                <tr>
                    <td colspan="2"><input type="submit" value="注册" /></td>
                </tr>
            </table>
        </div>
    </sf:form>
</body>
</html>

人个信息

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<!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=UTF-8">
<title>用户信息</title>
</head>
<body>
<h1>用户信息</h1>
<p>登录名:${user.loginName}</p>
<p>真实名:${user.userName}</p>
<p>地址:${user.address}</p>
<a href="">用户列表</a>
</body>
</html>
相关文章
|
1月前
|
缓存 前端开发 Java
Spring MVC 面试题及答案整理,最新面试题
Spring MVC 面试题及答案整理,最新面试题
88 0
|
1月前
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
10 0
|
1月前
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
9 0
|
1月前
|
SQL JavaScript Java
springboot+springm vc+mybatis实现增删改查案例!
springboot+springm vc+mybatis实现增删改查案例!
25 0
|
1月前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
40 1
|
5天前
|
JSON Java fastjson
Spring Boot 底层级探索系列 04 - Web 开发(2)
Spring Boot 底层级探索系列 04 - Web 开发(2)
15 0
|
10天前
|
数据采集 前端开发 Java
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
数据塑造:Spring MVC中@ModelAttribute的高级数据预处理技巧
22 3
|
10天前
|
存储 前端开发 Java
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
会话锦囊:揭示Spring MVC如何巧妙使用@SessionAttributes
13 1
|
10天前
|
前端开发 Java Spring
数据之桥:深入Spring MVC中传递数据给视图的实用指南
数据之桥:深入Spring MVC中传递数据给视图的实用指南
29 3
|
20天前
|
前端开发 安全 Java
使用Java Web框架:Spring MVC的全面指南
【4月更文挑战第3天】Spring MVC是Spring框架的一部分,用于构建高效、模块化的Web应用。它基于MVC模式,支持多种视图技术。核心概念包括DispatcherServlet(前端控制器)、HandlerMapping(请求映射)、Controller(处理请求)、ViewResolver(视图解析)和ModelAndView(模型和视图容器)。开发流程涉及配置DispatcherServlet、定义Controller、创建View、处理数据、绑定模型和异常处理。
使用Java Web框架:Spring MVC的全面指南

热门文章

最新文章