Spring框架学习(10.2)基于Maven的SSM框架整合 -SpringMVC、业务层、控制层、表现层

前言

记录学习过程,前接spring、MyBatis、持久层、实体层、mysql数据库
以上传项目,一起学习,共同进步

SpringMVC

  • 在resource包下创建springmvc.xml
    springmvc.xml是springmvc的一些相关配置
<?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-3.0.xsd">

    <!-- 扫描web相关的bean -->
    <context:component-scan base-package="com.ssm.controller"/>

    <!-- 开启SpringMVC注解模式 -->
    <mvc:annotation-driven/>

    <!-- 静态资源默认servlet配置 -->
    <mvc:default-servlet-handler/>

    <!-- 配置jsp 显示ViewResolver -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
        <property name="prefix" value="/WEB-INF/views/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

其中都是些基础配置

  • 到这里已经配置好了spring+springMVC+MyBatis,再在web.xml里关联整个项目就完成了
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <display-name>ChatRobot</display-name>
    <description>ChatRobot_Alpha_0.0.1</description>

    <!-- 编码过滤器 -->
    <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>
    </filter>
    <filter-mapping>
        <filter-name>encodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>SpringMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!-- 配置springMVC需要加载的配置文件-->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring*.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
        <async-supported>true</async-supported>
    </servlet>
    <servlet-mapping>
        <servlet-name>SpringMVC</servlet-name>
        <!-- 匹配所有请求,此处也可以配置成 *.do 形式 -->
        <!--/*.do是对所有以.do结尾的请求做处理,/*是对所有请求做处理-->
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

  • 配置完成,实现一个从数据库拿用户数据的功能
    java类:
    在这里插入图片描述
    配置文件及web项目:
    在这里插入图片描述

业务层与控制层

前面(10.1)已经实现了实体类和持久层,接下来实现业务层Service与其实现Impl和控制层Controller
表示层调用控制层,控制层调用业务层,业务层调用持久层(数据访问层)

  • 业务层Service
    IUserService接口:定义一个查询接口
package com.ssm.service;

import com.ssm.entity.User;

public interface IUserService {
    public User selectUser(long userId);
}

UserServiceImpl:对IUserService接口的实现

package com.ssm.service.impl;

import com.ssm.dao.IUserDao;
import com.ssm.entity.User;
import com.ssm.service.IUserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;

@Service("userService")
public class UserServiceImpl implements IUserService {
    //注入bean,@Resource默认按 byName自动注入
    @Resource
    private IUserDao userDao;

    public User selectUser(long userId) {
        return this.userDao.selectUser(userId);
    }
}
  • 控制层Controller
    Controller层通过要调用Service层的接口来控制业务流程,控制的配置也同样是在Spring的xml配置文件里面
package com.ssm.controller;

import com.ssm.entity.User;
import com.ssm.service.IUserService;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@Controller
@RequestMapping("/user")
public class UserController {
    //注入bean
    @Resource
    private IUserService userService;

    @RequestMapping("/showUser")
    public void selectUser(HttpServletRequest request, HttpServletResponse response) throws IOException {
        long userId = Long.parseLong(request.getParameter("id"));
        //往业务层对象传入id
        User user = this.userService.selectUser(userId);
        //ObjectMapper类将模型对象转换为JSON,或者JSON生成相应的模型类
        ObjectMapper mapper = new ObjectMapper();
        response.getWriter().write(mapper.writeValueAsString(user));
        response.getWriter().close();
    }

}

到这里后端需要设置的已经完成了,接下来编程前端表现层

前端-表现层

这里就简单写在index.jsp

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<script>
    function selectUser() {
        //ajax实现前后端结合
        var xmlhttp = new XMLHttpRequest();
        xmlhttp.onreadystatechange = function () {
            if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
                document.getElementById("test").innerHTML = xmlhttp.responseText;
            }
        }
        xmlhttp.open("POST", "user/showUser", true);
        xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xmlhttp.send("id=1");
    }
</script>
<body>
<p id="test">Welcome</p>
<button type="button" onclick="selectUser()">onclick test</button>
</body>
</html>

这里使用ajax实现前后端结合,往控制器传送id=1的数据,控制器会返回id为1的User数据

测试
在这里插入图片描述
在这里插入图片描述
结果得到了JSON格式的数据,测试完成

发布了49 篇原创文章 · 获赞 0 · 访问量 1250

猜你喜欢

转载自blog.csdn.net/key_768/article/details/104040076
今日推荐