spring4.3 web-MVC搭建

    xiaoxiao2026-06-17  8

    一、基本配置

    配置 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[] {"/"}; } } 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(); } } 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)