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

【java框架之Spring框架】创建ssm框架项目详细步骤之下(搭建SpringMVC)

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

【java框架之Spring框架】创建ssm框架项目详细步骤之下(搭建SpringMVC)

【java框架之Spring框架】创建ssm框架项目详细步骤之 上(spring集成mybatis)

【java框架之Spring框架之SpringBoot框架】SpringBoot是什么?如何搭建?

文章目录

三层架构是什么?SpringMVC?

springmvc运行流程 SpringMVC搭建步骤?

1、导入springMVC jar包2、配置DispatcherServlet3、开启 springmvc 注解4、控制器类搭建 @Controller

测试浏览器是否能请求到后端login()方法 5、接收请求 @RequestMapping

测试登录界面发送的登录请求,服务器能否接收到接收请求中的数据:

Data类型如何接收?中文乱码问题? 6、响应前端请求

跨域问题解决?响应格式:json格式响应结果封装拦截器?

三层架构是什么?


SpringMVC?

spring web层

​ springMVC 是spring 框架中的一个模块。

​ 是一种web层mvc框架, M代表model;V代表View;C代表controller.

​ 是一个web层模块,在servlet的基础上进行封装,功能更加强大。

作用:

    接收请求数据调用业务逻辑层向前端响应数据
springmvc运行流程

1、当用户发送请求(IP+端口/项目名/类地址/方法地址)

​ 首先到达servlet(DispatcherServlet) 配置的时候地址为/, 表示所有的请求都可以进入到servlet中。

​ DispatcherServlet是springmvc中的调度者,

2、调用HandleMapping映射处理器,解析请求中的地址,找到对应的Controller及方法

3、回到DispatcherServlet ,调用HandlerAdapter对请求中的数据进行处理。

4、到达自己开发的Controller及里面的方法

​ 接收数据,调用业务逻辑层处理,响应 Json


SpringMVC搭建步骤?

搭建步骤:

    导入springmvc jar包

    在web.xml中配置DispatcherServlet 进入地址 /

    配置文件

    开启springmvc注解

    开发控制器(处理器)

    定义类地址,方法地址

标签:

    @Controller

    @RequestMapping(value="/地址" method=“哪些请求可以进入到此方法”)

    @GetMapping(value="/地址")

    @PostMapping(value="/地址")

参数的接收:

    在参数列表中进行绑定

    @RequestParam(“account”) String acc

    String account

    使用对象封装 User3

1、导入springMVC jar包

pom.xml


    org.springframework
    spring-webmvc
    5.2.2.RELEASE

2、配置DispatcherServlet

web.xml




    
    
        springApplication
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:spring.xml
        
        0
    
    
    
        springApplication
        / 
    

3、开启 springmvc 注解

springmvc.xml




    

    
    


4、控制器类搭建 @Controller

LoginController()类

package com.ffyc.ssm.controller;

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


@Controller
@RequestMapping(value = "/loginCtl")
public class LoginController {

    @RequestMapping(value = "/login")
    public void login(){
        System.out.println("login");
    }
}
测试浏览器是否能请求到后端login()方法

①部署到服务器上:配置tomcat


②浏览器输入访问地址

http://127.0.0.1:8080/ssm/loginCtl/login

loginCtl : 类名 login : 方法名


③结果: 访问login()方法成功

5、接收请求 @RequestMapping 测试登录界面发送的登录请求,服务器能否接收到

搭建前端 web项目 : 学生管理系统

跨域问题现在不用考虑,因为现在测试的是前端是否能够发送请求,后端能否响应。

后端有响应:login()方法作用了。

这里有一个后端如何对前端请求的方法进行限制的问题:通过方法上加标签,

@RequestMapping(value = “/login”,method = RequestMethod.POST)

@PostMapping(value = “/login”)
@GetMapping(value = “/login”)

package com.ffyc.ssm.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;


@Controller
@RequestMapping(value = "/loginCtl")
public class LoginController {

    
//    @RequestMapping(value = "/login",method = RequestMethod.POST)
    @GetMapping(value = "/login")
    public void login(){
        System.out.println("login");
    }
}
接收请求中的数据:
package com.ffyc.ssm.controller;

import com.ffyc.ssm.model.User;
import com.ffyc.ssm.service.LoginService;
import com.sun.xml.internal.ws.resources.HttpserverMessages;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;


@Controller
@RequestMapping(value = "/loginCtl")
public class LoginController {

    @Autowired
    LoginService  loginService;
    
    

    

    

    
    @PostMapping(value = "/login")
    public int login(User user, HttpServletRequest request, HttpSession session){
        System.out.println(user);  //User{id=null, account='admin', password='111'}
        User u = loginService.login(user);
        System.out.println(u);
        return 0;
    }
}
Data类型如何接收?

接收前端传过来的Date类型数据:

需要通过@DateTimeFormat标签给定日期格式 ,否则会报错,因为String默认转不了Date

@DateTimeFormat(pattern = "yyyy-MM-dd")
private Date birthday;

中文乱码问题?

提交请求的时候,前端页面如果输入的是中文,处理器方法获取后出现乱码。

输入中文,后端接收数据显示????乱码


解决乱码方法:

解决方法是: 添加过滤器,为request对象设置编码集

在springmvc中提供了一个过滤器,只需要在web.xml中配置



    characterEncodingFilter
    org.springframework.web.filter.CharacterEncodingFilter
    
        encoding
        UTF-8
    


    characterEncodingFilter
    
//@Controller
@RestController  //里面包含 @Controller + @ResponseBody
@RequestMapping(value = "/loginCtl")
public class LoginController {

    @Autowired
    LoginService  loginService;
    
    

    
    @PostMapping(value = "/login")
//    @ResponseBody
    public CommonResult login(User user,HttpSession session){
//        CommonResult commonResult = null;
        try{
            System.out.println(user);
            User u = loginService.login(user);
            if(u!=null){
                session.setAttribute("user", u);
                return new CommonResult("登录成功",200,u);
            }else {
                return new CommonResult("账号或密码错误",202,null);
            }

        }catch (Exception e){
            e.printStackTrace();
            //return 500;  //如果出异常需要响应给前端500,但是这个返回的是int类型,和上面没有异常是响应的类型不一致。如何解决:Common包/CommonResult类,对响应结果进行封装
            return new CommonResult("异常",500,null);
        }
    }
}

响应给前端的结果:

拦截器?

过滤器、拦截器不同:

过滤器是Javaweb自身的东西,拦截器是springmvc中的东西

用拦截器实现验证用户登录是否失效:

①filter中写IsLoginInterceptor类

package com.ffyc.ssm.filter;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class CorsFilter implements Filter {
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
            throws IOException, ServletException {
        System.out.println("跨域过滤器");
        HttpServletResponse httpResponse = (HttpServletResponse) servletResponse;
        HttpServletRequest httpRequest = (HttpServletRequest) servletRequest;
        //允许携带cookie时不能设置为* 否则前端报错
        httpResponse.setHeader("Access-Control-Allow-Origin", httpRequest.getHeader("origin"));//允许所有请求跨域
        httpResponse.setHeader("Access-Control-Allow-Methods", "*");//允许跨域的请求方法GET, POST, HEAD 等
        httpResponse.setHeader("Access-Control-Allow-Headers", "*");//允许跨域的请求头
        httpResponse.setHeader("Access-Control-Allow-Credentials", "true");//是否携带cookie

        filterChain.doFilter(servletRequest, servletResponse);
    }
}

②配置拦截器

springmvc.xml


    
         

登录进入主页面后重启后端服务器:点击退出 就会登录失效

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

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

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