IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> 2021-07-14(idea版)尚硅谷项目尚筹网学习第三天 -> 正文阅读

[开发测试]2021-07-14(idea版)尚硅谷项目尚筹网学习第三天

1、创建spring-web-mvc.xml

?配置自动扫描的包

? ? ? ? com.atguigu.crowd.mvc是存放controller的地方

 <!--配置自动扫描的包-->
    <context:component-scan base-package="com.atguigu.crowd.mvc"/>

配置MVC注解驱动:

    <!--配置springMVC注解驱动-->
    <mvc:annotation-driven/>

配置视图解析器:

? ? ? ? prefix:代表前缀

? ? ? ? suffix:代表后缀? value是其中的值

<!--配置视图解析器-->
    <bean id="resolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

spring-web-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/tool http://www.springframework.org/schema/tool/spring-tool.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!--配置自动扫描的包-->
    <context:component-scan base-package="com.atguigu.crowd.mvc"/>

    <!--配置springMVC注解驱动-->
    <mvc:annotation-driven/>

    <!--配置视图解析器-->
    <bean id="resolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

</beans>

2、测试SSM整合

? ? ? ? index.jsp:

<html>
<head>
    <title>Title</title>
    <%--http://localhost:8888/index.jsp--%>
    <base href="http://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/"/>
    <script type="text/javascript" src="jquery/jquery-2.1.1.min.js"></script>
</head>
<body>
    <h1>Hello!!!</h1>
    <a href="test/ssm.html">测试</a><br>
</body>
</html>

target.jsp

? ? ? ? WEB-INF下创建target.jsp?

代码如下:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
  <h1>Hi,you are success!</h1>
    ${requestScope.admins}
</body>
</html>

? ? ? ? 在mvc下的controller创建TestController:

TestController中的代码如下:

package com.atguigu.crowd.mvc.controller;

import com.atguigu.crowd.entity.Admin;
import com.atguigu.crowd.service.api.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;

@Controller
public class TestController {


    @Autowired
    private AdminService adminService;

    @RequestMapping(value = "/test/ssm.html")
    public String testController01(Model model){
        List<Admin> admins= adminService.getAll();
        model.addAttribute("admins",admins);
        System.out.println(admins);
        return "target";
    }

}

?service中api以及impl代码如下

? ? ? ? AdminService

package com.atguigu.crowd.service.api;

import com.atguigu.crowd.entity.Admin;

import java.util.List;

public interface AdminService {

     //保存
     void saveAdmin(Admin admin);

     //查询所有管理员信息
     List<Admin> getAll();
}

????????AdminServiceImpl:

package com.atguigu.crowd.service.impl;

import com.atguigu.crowd.entity.Admin;
import com.atguigu.crowd.entity.AdminExample;
import com.atguigu.crowd.mapper.AdminMapper;
import com.atguigu.crowd.service.api.AdminService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class AdminServiceImpl implements AdminService {

    @Autowired
    AdminMapper adminMapper;

    @Override
    public void saveAdmin(Admin admin) {
        adminMapper.insert(admin);
    }

    @Override
    public List<Admin> getAll() {
        //不带任何条件就是查询全部
        return adminMapper.selectByExample(new AdminExample());
    }
}

3、测试简单数据Ajax

? ? ? ? ?通过Ajax传递数组[5,8,12]

????????index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <%--http://localhost:8888/index.jsp--%>
    <base href="http://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/"/>
    <script type="text/javascript" src="jquery/jquery-2.1.1.min.js"></script>
    <script type="text/javascript" src="layer/layer.js"></script>
</head>
<body>
    <h1>Hello!!!</h1>
    <a href="test/ssm.html">测试</a><br>
    <button id="btn2">send[5,8,12] Two</button>
    <br>
</body>
<script>
    $(function (){
        $("#btn2").click(function (){
            //准备好要发送到服务器端的数组
            var array=[5,8,12];
            //将json数组转化为json字符串
            var requestBody = JSON.stringify(array);
            $.ajax({
                "url":"send/array/two.html",    //请求目标资源的地址
                "type":"post",              //请求方式
                "data":requestBody,         //请求体
                "contentType":"application/json;charset=UTF-8", //请求体的内容类型
                "dataType":"text",          //如何对待服务端返回的数据
                "success":function (response){  //服务端处理成功后的回调函数
                    alert(response);
                },
                "error":function (response){    //服务端处理失败后的回调函数
                    alert(response);
                }
            });
        });
    });

</script>
</html>

在TestController中加入

 @ResponseBody
    @RequestMapping(value = "/send/array/two.html")
    public String testSendArrayTwo(@RequestBody List<Integer> array){
        for (Integer i:array) {
            logger.info("number"+i);
        }
        return "succecss";
    }

????????可以得到正确的响应:

?????????浏览器响应数据:

?4、测试复杂数据Ajax

通过Ajax传递封装好的Student对象

创建Student,Subject,Address类

? ? ? ? Student.class

package com.atguigu.crowd.entity;
import java.util.List;
import java.util.Map;

public class Student {

    private Integer stuId;
    private String stuName;
    private Address address;
    private List<Subject> subjectList;
    private Map<String,String> map;

    public Student() {
    }

    public Student(Integer stuId, String stuName, Address address, List<Subject> subjectList, Map<String, String> map) {
        this.stuId = stuId;
        this.stuName = stuName;
        this.address = address;
        this.subjectList = subjectList;
        this.map = map;
    }

    public Integer getStuId() {
        return stuId;
    }

    public void setStuId(Integer stuId) {
        this.stuId = stuId;
    }

    public String getStuName() {
        return stuName;
    }

    public void setStuName(String stuName) {
        this.stuName = stuName;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public List<Subject> getSubjectList() {
        return subjectList;
    }

    public void setSubjectList(List<Subject> subjectList) {
        this.subjectList = subjectList;
    }

    public Map<String, String> getMap() {
        return map;
    }

    public void setMap(Map<String, String> map) {
        this.map = map;
    }

    @Override
    public String toString() {
        return "Student{" +
                "stuId='" + stuId + '\'' +
                ", stuName='" + stuName + '\'' +
                ", address=" + address +
                ", subjectList=" + subjectList +
                ", map=" + map +
                '}';
    }
}

? ? ? ? Subject.class

package com.atguigu.crowd.entity;

public class Subject {

    private String subjectName;
    private Integer sunjectScore;

    public Subject(){
    }

    public Subject(String subjectName, Integer sunjectScore) {
        this.subjectName = subjectName;
        this.sunjectScore = sunjectScore;
    }

    public String getSubjectName() {
        return subjectName;
    }

    public void setSubjectName(String subjectName) {
        this.subjectName = subjectName;
    }

    public Integer getSunjectScore() {
        return sunjectScore;
    }

    public void setSunjectScore(Integer sunjectScore) {
        this.sunjectScore = sunjectScore;
    }

    @Override
    public String toString() {
        return "Subject{" +
                "subjectName='" + subjectName + '\'' +
                ", sunjectScore=" + sunjectScore +
                '}';
    }
}

Address.class

package com.atguigu.crowd.entity;

public class Address {

    private String province;
    private String city;
    private String street;

    public Address() {
    }

    public Address(String province, String city, String street) {
        this.province = province;
        this.city = city;
        this.street = street;
    }

    public String getProvince() {
        return province;
    }

    public void setProvince(String province) {
        this.province = province;
    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getStreet() {
        return street;
    }

    public void setStreet(String street) {
        this.street = street;
    }

    @Override
    public String toString() {
        return "Address{" +
                "province='" + province + '\'' +
                ", city='" + city + '\'' +
                ", street='" + street + '\'' +
                '}';
    }
}

准备前端数据:

????????index.jsp

<html>
<head>
    <title>Title</title>
    <%--http://localhost:8888/index.jsp--%>
    <base href="http://${pageContext.request.serverName}:${pageContext.request.serverPort}${pageContext.request.contextPath}/"/>
    <script type="text/javascript" src="jquery/jquery-2.1.1.min.js"></script>
    <script type="text/javascript" src="layer/layer.js"></script>
</head>
<body>
    <h1>Hello!!!</h1>
    <a href="test/ssm.html">测试</a><br>
    <button id="btn2">send[5,8,12] Two</button>
    <br>
    <button id="btn3">发送复杂对象</button>
    <br>
</body>
<script>
    $(function (){
        $("#btn3").click(function (){
           /* private Integer stuId;
            private String stuName;
            private Address address;
            private List<Subject> subjectList;
            private Map<String,String> map;*/
            var student={
                "stuId":5,
                "stuName":"tom",
                "address":{
                    "province":"湖北省",
                    "city":"武汉市",
                    "street":"后端"
                },
                "subjectList":[{
                    "subjectName":"Java编程",
                    "sunjectScore":100
                },{
                    "subjectName":"c++",
                    "sunjectScore":100
                },{
                    "subjectName":"python",
                    "sunjectScore":100
                }],
                map:{
                    "key1":"value1",
                    "key2":"value2",
                    "key3":"value3",
                }
            }
            //将json对象转化为json字符串
            var requestBody = JSON.stringify(student);
            $.ajax({
                "url":"send/compose/object.html",
                "type":"post",
                "data":requestBody,
                "contentType":"application/json;charset=UTF-8", //请求体的内容类型
                "dataType":"text",          //如何对待服务端返回的数据
                "success":function (response){  //服务端处理成功后的回调函数
                    alert(response);
                },
                "error":function (response){    //服务端处理失败后的回调函数
                    alert(response);
                }
            });
        });
    });


    $(function (){
        $("#btn2").click(function (){
            //准备好要发送到服务器端的数组
            var array=[5,8,12];
            //将json数组转化为json字符串
            var requestBody = JSON.stringify(array);
            $.ajax({
                "url":"send/array/two.html",    //请求目标资源的地址
                "type":"post",              //请求方式
                "data":requestBody,         //请求体
                "contentType":"application/json;charset=UTF-8", //请求体的内容类型
                "dataType":"text",          //如何对待服务端返回的数据
                "success":function (response){  //服务端处理成功后的回调函数
                    alert(response);
                },
                "error":function (response){    //服务端处理失败后的回调函数
                    alert(response);
                }
            });
        });
    });

</script>
</html>

TestController中加入

@ResponseBody
    @RequestMapping(value = "/send/compose/object.html")
    public String testCompose(@RequestBody Student student,HttpServletRequest request){
        boolean b = CrowdUtil.judgeRequestType(request);
        logger.info("judgeRequestType---"+b);
        logger.info(student.toString());
        return "success";
    }

可以得到响应:

?

?5、使用泛型对象传递数据

创建ResultEntity类

package com.atguigu.crowd.util;

/**
 * 统一整个项目中ajax返回的结果
 * @param <T>
 */
public class ResultEntity<T> {

    public static final String SUCCESS = "SUCCESS";

    public static final String FAILED = "FAILED";

    //用来封装当前请求处理的结果是成功还是失败
    private String result;

    //请求失败时返回的消息
    private String message;

    //要返回的数据
    private T data;

    /**
     * 请求处理成功时不需要返回数据使用的方法
     * @param <Type>:泛型
     * @return ResultEntity
     */
    public static <Type> ResultEntity<Type> successWithoutData(){
        return new ResultEntity<Type>(SUCCESS,null,null);
    }

    /**
     * 请求处理成功时需要返回数据使用的方法
     * @param <Type>:泛型
     * @return ResultEntity
     */
    public static <Type> ResultEntity<Type> successWithData(Type data){
        return new ResultEntity<Type>(SUCCESS,null,data);
    }

    /**
     * 请求处理失败时需要返回数据使用的方法
     * @param message:消息
     * @param <Type>:泛型
     * @return ResultEntity
     */
    public static <Type> ResultEntity<Type> filed(String message){
        return new ResultEntity<Type>(FAILED,message,null);
    }

    public ResultEntity() {
    }

    public ResultEntity(String result, String message, T data) {
        this.result = result;
        this.message = message;
        this.data = data;
    }

    public String getResult() {
        return result;
    }

    public void setResult(String result) {
        this.result = result;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public T getData() {
        return data;
    }

    public void setData(T data) {
        this.data = data;
    }

    @Override
    public String toString() {
        return "ResultEntity{" +
                "result='" + result + '\'' +
                ", message='" + message + '\'' +
                ", data=" + data +
                '}';
    }
}

jsp中加入

  <button id="btn4">发送复杂对象(ResultEntity测试)</button>
<script>
    $(function (){
        $("#btn4").click(function (){
            var student={
                "stuId":5,
                "stuName":"tom",
                "address":{
                    "province":"湖北省",
                    "city":"武汉市",
                    "street":"后端"
                },
                "subjectList":[{
                    "subjectName":"Java编程",
                    "sunjectScore":100
                },{
                    "subjectName":"c++",
                    "sunjectScore":100
                },{
                    "subjectName":"python",
                    "sunjectScore":100
                }],
                map:{
                    "key1":"value1",
                    "key2":"value2",
                    "key3":"value3",
                }
            }
            //将json对象转化为json字符串
            var requestBody = JSON.stringify(student);
            $.ajax({
                "url":"send/compose/ResultEntity.json",
                "type":"post",
                "data":requestBody,
                "contentType":"application/json;charset=UTF-8", //请求体的内容类型
                "dataType":"json",          //如何对待服务端返回的数据
                "success":function (response){  //服务端处理成功后的回调函数
                    alert(response);
                },
                "error":function (response){    //服务端处理失败后的回调函数
                    alert(response);
                }
            });
        });
    });
</script>

测试内容与上一次相同

6、判断是否为Ajax请求

? ? ? ? 编写CrowdUtil工具类

package com.atguigu.crowd.util;
import javax.servlet.http.HttpServletRequest;



public class CrowdUtil {


    public static boolean judgeRequestType(HttpServletRequest request){

        // 1、获取请求消息头
        String content = request.getHeader("Content-Type");
        String header = request.getHeader("X-Requested-With");
        // 2、判断
     return (content!=null&&content.contains("application/json"))
            ||
                (header!=null&&header.contains("XMLHttpRequest"));
    }
}

? ? ? ? 注意:Ajax请求请求头中的内容于此对应。

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-07-15 16:31:53  更:2021-07-15 16:32:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/8 2:15:13-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码