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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值