栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringMVC速通

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringMVC速通

文章目录
    • 1 SpringMVC
      • 1.1 引言
      • 1.2 MVC架构
    • 2 开发流程
      • 2.1 步骤
      • 2.3 中文乱码问题
    • 3.请求参数接收
      • 3.1 基本类型参数
      • 3.2 实体类接收(推荐)
      • 3.3 数组接收
      • 3.4 集合接收
      • 3.5 路径接收
    • 4 跳转
      • 4.1 转发
      • 4.2 重定向
      • 4.3 细节
    • 5 传值
      • 5.1 request和session
      • 5.2 model
      • 5.3 @SessionAttributes
      • 5.4 ModelAndView
    • 6 静态资源
      • 6.1 解决方法1
      • 6.2 解决方法2
      • 6.3 解决方法3
    • 7 JSON处理
      • 7.1 导入依赖
      • 7.2 @ResponseBody
      • 7.3 @RestController
      • 7.4 @RequestBody
      • 7.5 Jackson常用注解
      • 7.6 FastJson
    • 8 异常解析器
    • 9 拦截器
      • 9.1 定义拦截器
      • 9.2 配置拦截器
    • 10 上传
      • 10.1 导入依赖
      • 10.2 表单
    • 11.下载
    • 12.验证码
    • 13.REST
      • 13.1 概念
      • 13.2 用法
    • 14 跨域问题
      • 14.1 域
      • 14.2 Ajax跨域问题
      • 14.3 解决方法
    • 15 SpringMVC执行流程
    • 实例、SSM实现登录
      • 一、准备数据库
      • 二、创建Maven项目并在pom中添加依赖
      • 三、在Resources目录下创建日志文件log4j.properties,以及数据库配置文件jdbc.properties
      • 四、给项目添加Web功能和配置Tomcat
      • 五、创建Bean包和User实体类
      • 六、创建Mapper包和用户映射器接口UserMapper
      • 七、创建service包和用户服务类 -UserService
      • 八、创建controller包和用户控制器 -UserController
      • 九、在Resources目录下创建mapper文件夹和用户映射器配置文件 UserMapper.xml
      • 十、在Resources目录下创建config文件夹以及Spring配置文件spring-config.xml、SpringMVC配置文件spring-mvc-config.xml
      • 十一、编辑Web部署描述文件 web.xml
      • 十二、创建前端页面
        • 1、login.css
        • 2、check.js
        • 3、login.jsp
        • 4.index.jsp
        • 5.management.jsp
        • 4.index.jsp
        • 5.management.jsp

1 SpringMVC 1.1 引言
  • java开源框架,Spring Framework的一个独立模块。
  • MVC框架,在项目中开辟MVc层次架构
  • 对控制器中的功能包装简化扩展践行工厂模式,功能架构在工厂之上
1.2 MVC架构

MVC : Model View Controller
模型 视图 控制器
模型:即业务模型,负责完成业务中的数据通信处理,对应项目中的service和dao
视图:渲染数据,生成页面。对应项目中的jsp
控制器:直接对接请求,控制MVC流程,调度模型,选择视图。对应项目中的Servlet


  • MVC是现下软件开发中的最流行的代码结构形态;
  • 人们根据负责的不同逻辑,将项目中的代码分成MVC 3个层次;层次内部职责单一,层次之间耦合度低;
  • 符合低耦合高内聚的设计理念。也实际有利于项目的长期维护。
2 开发流程 2.1 步骤

导入依赖



    org.springframework
    spring-webmvc
    5.3.14



    org.projectlombok
    lombok
    1.18.22

配置前端控制器web.xml

右键项目名–>添加框架支持–>web

  • 作为一个MVC框架,首先要解决的是:如何能够收到请求!
  • 所以MVC框架大都会设计一款前端控制器,选型在Servlet或 Filter两者之一,在框架最前沿率先工作,接收所有请求。
  • 此控制器在接收到请求后,还会负责springMVc的核心的调度管理,所以既是前端又是核心。



    
    
        mvc
        org.springframework.web.servlet.DispatcherServlet

        
        
            contextConfigLocation
            classpath:mvc.xml
        

        
        1
    
    
        mvc
        /
    

配置后端控制器

@Controller //声明这是一个控制器
@RequestMapping("/hello")//访问路径,等价于url-pattern
public class HelloController {

    @RequestMapping( "/test1")//访问路径
    public String hello1(){
            System.out.println( "hello world" );
            return "hello"; //跳转:/index.jsp
    }

}

配置文件

在resource目录下创建mvc.xml

默认名称:核心控制器名-servet.xml默认位置:WEB-INF随意名称: mvc.xml

随意位置:resources但需要配置在核心控制器中




    
    

    
    

    
    
        
        
        
        
    

运行Tomcat测试

http://localhost:8080/

http://localhost:8080/hello/test1

2.3 中文乱码问题

页面字符集统一

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

tomcat中字符集设置,对get请求中,中文参数乱码有效

Tomcat配置:URIEncoding=utf-8

设置此filter,对post请求中,中文参数乱码有效



    Character Encoding
    org.springframework.web.filter.CharacterEncodingFilter
    
        encoding
        utf-8
    


    Character Encoding
    
public class MyExceptionResolve implements HandlerExceptionResolver {
    public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object o, Exception e) {
        ModelAndView modelAndView = new ModelAndView();
        if (e instanceof MyException1) {
            //error1.jsp
            modelAndView.setViewName("redirect:/error1");
        } else if (e instanceof MyException2){
            //error2.jsp
            modelAndView.setViewName("redirect:/error12");
        } else if (e instanceof MyException3){
            //error3.jsp
            modelAndView.setViewName("redirect:/error3");
        }
        return modelAndView;
    }
}


//在需要的方法处使用
throw new MyException1("test1")
9 拦截器

作用:抽取handler中的冗余功能

9.1 定义拦截器

执行顺序: preHandle–postHandle–afterCompletion

public class MyInterceptor implements HandlerInterceptor {
    //判断登录状态
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        HttpSession session = request.getSession();
        if (session.getAttribute("state") != null) {
            return true;//放行,执行后续handler
        }
        //中断之前响应请求
        response.sendRedirect("/login.jsp"); //登录
        return false;//终端请求,不再执行handler
    }

    //handler之后,响应之前执行
    //用于改动请求中数据
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
    }

    //在视图渲染完毕后执行
    //资源回收
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion");
    }
}
9.2 配置拦截器


    
        
        
         
        package net.lj.shop.mapper;

import net.lj.shop.bean.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;


@Mapper
public interface UserMapper {
    User login(@Param("username") String username, @Param("password") String password);
}
七、创建service包和用户服务类 -UserService
package net.lj.shop.service;

import net.lj.shop.bean.User;
import net.lj.shop.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    public User login(String username, String password) {
        return userMapper.login(username, password);
    }
}
八、创建controller包和用户控制器 -UserController
package net.lj.shop.controller;

import net.lj.shop.service.UserService;
import net.lj.shop.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpSession;


@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserService userService;

    @RequestMapping("/login")
    public String login(@RequestParam("username") String username,
                        @RequestParam("password") String password,
                        HttpSession session) {
        // 调用用户服务对象的登录方法
        User user = userService.login(username, password);
        // 判断用户是否登录成功
        if (user != null) {
            // 将登录用户名写入会话
            session.setAttribute("username", username);
            // 删除会话里可能存在的登录错误提示信息
            if (session.getAttribute("loginMsg") != null) {
                session.removeAttribute("loginMsg");
            }
            // 判断用户角色,跳转到不同页面
            if (user.getPopedom() == 0) {
                // 跳转到后台管理页面
                return "backend/management"; // 逻辑视图名
            } else {
                // 跳转到前台首页
                return "frontend/index"; // 逻辑视图名
            }
        } else {
            // 将登录错误信息写入会话
            session.setAttribute("loginMsg", "用户名或密码错误!");
            // 跳转到前台登录页面
            return "frontend/login"; // 逻辑视图名
        }
    }

    @RequestMapping("/logout")
    public String logout(HttpSession session) {
        // 删除会话里保存的用户名信息
        session.removeAttribute("username");
        // 结束会话
        session.invalidate();
        // 跳转到前台登录页面
        return "frontend/login"; // 逻辑视图名
    }
}
九、在Resources目录下创建mapper文件夹和用户映射器配置文件 UserMapper.xml




    
    
        
        
        
        
        
        
    

    
    
        SELECT * FROM t_user WHERe username = #{username} AND password = #{password};
    


十、在Resources目录下创建config文件夹以及Spring配置文件spring-config.xml、SpringMVC配置文件spring-mvc-config.xml



    
    

    
    

    
    
        
        
        
        
        
        
        
        
        
        

        
        

        
        

        
        

        
        
        
        

        
        
        

        
        
    

    
    
        
        
        
        
    

    
    
        
        
        
        
    




    
    
function checkLoginForm() {
    // 获取用户名文本框
    var username = document.getElementById("username");
    // 获取密码文本框
    var password = document.getElementById("password");
    // 非空校验
    if (username.value == "") {
        alert("用户名不能为空!");
        // 让用户名文本框获得焦点
        username.focus();
        return false;
    }
    if (password.value == "") {
        alert("密码不能为空!");
        // 让密码文本框获得焦点
        password.focus();
        return false;
    }
    return true; // 表明可以提交数据到服务器端
}
3、login.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>





    用户登录
    
    
    
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/868409.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号