spring mvc简介
spring整合spring mvc
- pom.xml引入依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.3.17.RELEASE</version>
</dependency>
- 配置web.xml
CharacterEncodingFilter 配置字符集过滤器,用于解决中文编码问题
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
DispatcherServlet 配置 Spring 的 Servlet 分发器处理所有 HTTP 的请求和响应
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/spring-mvc*.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
- 配置spring mvc
创建spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<description>Spring MVC Configuration</description>
<!-- 加载配置属性文件 -->
<context:property-placeholder ignore-unresolvable="true" location="classpath:myshop.properties"/>
<!-- 使用 Annotation 自动注册 Bean,只扫描 @Controller -->
<context:component-scan base-package="com.example.my.shop" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
<!-- 默认的注解映射的支持 -->
<mvc:annotation-driven />
<!-- 定义视图文件解析 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="${web.view.prefix}"/>
<property name="suffix" value="${web.view.suffix}"/>
</bean>
<!-- 静态资源映射 -->
<mvc:resources mapping="/static/**" location="/static/" cache-period="31536000"/>
</beans>
- 创建myshop.properties 系统相关配置
#============================#
#==== Framework settings ====#
#============================#
# \u89c6\u56fe\u6587\u4ef6\u5b58\u653e\u8def\u5f84
web.view.prefix=/WEB-INF/views/
web.view.suffix=.jsp
- 创建静态资源文件夹static 把assets放进去
- 创建WEB-INF/views文件夹把jsp放进去
- 去掉Spring配置的对controller的重复扫描
修改spring-context.xml
<context:annotation-config />
<context:component-scan base-package="com.example.my.shop">
<context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan>
第一个controller控制器
@Controller
public class LoginController{
private static final String COOKIE_USER_INFO="userInfo";
@Autowired
private UserService userService;
@RequestMapping(value ={"","login"},method = RequestMethod.GET)
private String login(HttpServletRequest req){
String userInfo= CookieUtils.getCookieValue(req,COOKIE_USER_INFO);
if(!StringUtils.isBlank(userInfo))
{
String[] userInfoArray=userInfo.split(":");
String email=userInfoArray[0];
String password =userInfoArray[1];
req.setAttribute("email",email);
req.setAttribute("password",password);
req.setAttribute("isRemember",true);
}
return "login";
}
@RequestMapping(value="login",method = RequestMethod.POST)
public String login(HttpServletRequest req, HttpServletResponse resp){
String email=req.getParameter("email");
String password = req.getParameter("password");
User user=userService.login(email,password);
//记住我
Boolean isRemember=req.getParameter("isRemember")==null?false:true;
//登录失败的处理
if(user==null){
req.setAttribute("message","用户名或密码错误");
return "login";
}
//登录成功的处理
else{
//如果用户点击记住我
if(isRemember==true)
{
CookieUtils.setCookie(req,resp,COOKIE_USER_INFO,String.format("%s:%s",email,password));
}
else {
CookieUtils.deleteCookie(req,resp,COOKIE_USER_INFO);
}
return "redirect:/main";
}
}
}
转自: