Java教程

【SpringMVC笔记,Java面试技巧和注意事项

本文主要是介绍【SpringMVC笔记,Java面试技巧和注意事项,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
    <filter-name>encoding</filter-name>

    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>encoding</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>


`applicationContext.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

   https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd">



<!-- 自动扫描包,让指定包下的注解生效,由IOC容器统一管理 -->

<context:component-scan base-package="com.yusael.controller"/>

<!--静态资源过滤-->

<mvc:default-servlet-handler/>

<!--注解驱动配置-->

<mvc:annotation-driven/>



<!-- 视图解析器 -->

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"

      id="internalResourceViewResolver">

    <!-- 前缀 -->

    <property name="prefix" value="/WEB-INF/jsp/" />

    <!-- 后缀 -->

    <property name="suffix" value=".jsp" />

</bean>


编写一个 `AjaxController`:



@RestController

public class AjaxController {

@RequestMapping("/ajax1")

public void ajax1(String name, HttpServletResponse response) throws IOException {

    if ("admin".equals(name)) {

        response.getWriter().write("true");

    } else {

        response.getWriter().write("false");

    }

}

}



编写 `index.jsp` 测试:



<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

<title>Ajax测试</title>

<script src="${pageContext.request.contextPath}/statics/js/jquery-3.4.1.min.js"></script>

<script> function a1() {

    $.ajax({

      url : "${pageContext.request.contextPath}/ajax1",

      data : {'name' : $("#username").val()},

      success : function(data, status) {

        alert(data);

        alert(status);

      },

      error : function () {}

    });

  } </script>
<%--onblur:失去焦点触发事件--%>

用户名: <input type="text" id="username" onblur="a1()">


![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=2020061423190750.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_16,color_FFFFFF,t_70)



[](
)Ajax 执行流程

----------------------------------------------------------------------------



![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200614233752946.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_16,color_FFFFFF,t_70)



[](
)Ajax 异步加载数据案例

================================================================================



首先写一个实体类 `User`:



@Data

@AllArgsConstructor

@NoArgsConstructor

public class User {

private String name;

private int age;

private String sex;

}



在 Controller 中获取一个集合对象,展示到前端页面:



@RequestMapping("/ajax2")

public List ajax2() {

List<User> list = new ArrayList<>();

list.add(new User("zhenyu", 21, "男"));

list.add(new User("yusael", 99, "男"));

list.add(new User("hahaha", 18, "女"));

return list; // 由于@RestController注解, 将list转成json格式返回

}



前端页面:`ajaxtest.jsp`



<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

<meta charset="UTF-8">

<title>Ajax测试</title>
<tr>

    <td>姓名</td>

    <td>年龄</td>

    <td>性别</td>

</tr>

<tbody id="content"></tbody>


![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200615000523518.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_16,color_FFFFFF,t_70)



[](
)Ajax 验证用户名密码

===============================================================================



思考一下:我们平时登录时,输入框后面的实时提示是怎么做到的?



`Controller`:



@RequestMapping("/ajax3")

public String ahax3(String name, String pwd) {

String msg = "";

if (name != null) {

    if ("admin".equals(name)) {

        msg = "OK";

    } else {

        msg = "用户名有误!";

    }

}

if (pwd != null) {

    if ("123456".equals(pwd)) {

        msg = "OK";

    } else {

        msg = "密码输入有误!";

    }

}

return msg;

}



前端页面 `login.jsp`:



<%@ page contentType=“text/html;charset=UTF-8” language=“java” %>

<title>Login</title>

<script src="${pageContext.request.contextPath}/statics/js/jquery-3.4.1.min.js"></script>

<script> function a1() {

        $.post({

            url : "${pageContext.request.contextPath}/ajax3",

            data : {'name' : $("#name").val()},

            success : function (data) {

                if (data.toString() === 'OK') {

                    $("#userInfo").css("color", "green");

                } else {

                    $("#userInfo").css("color", "red");

                }

                $("#userInfo").html(data);

            }

        });

    }

    function a2() {

        $.post("${pageContext.request.contextPath}/ajax3", {'pwd' : $("#pwd").val()}, function (data) {

            if (data.toString() === "OK") {

                $("#pwdInfo").css("color", "green");

            } else {

                $("#pwdInfo").css("color", "red");

            }

            $("#pwdInfo").html(data);

        });

    } </script>

用户名:

<span id="userInfo"></span>

密码: <input type="text" id="pwd" onblur="a2()">

<span id="pwdInfo"></span>



注:记得处理 JSON 乱码!  

`applicationContext.xml` 中加入以下代码:



mvc:annotation-driven

<mvc:message-converters register-defaults="true">

    <bean class="org.springframework.http.converter.StringHttpMessageConverter">

        <constructor-arg value="UTF-8"/>

    </bean>

    <bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">

        <property name="objectMapper">

            <bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean">

                <property name="failOnEmptyBeans" value="false"/>

            </bean>

        </property>

    </bean>

</mvc:message-converters>

</mvc:annotation-driven>



![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200615003237873.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_16,color_FFFFFF,t_70)  

![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200615003254669.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_16,color_FFFFFF,t_70)



[](
)获取 百度 接口案例

=============================================================================



![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=2020061500345580.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80MzczNDA5NQ==,size_16,color_FFFFFF,t_70)



<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<title>JSONP百度搜索</title>

<style> #q{

        width: 500px;

        height: 30px;

        border:1px solid #ddd;

        line-height: 30px;

        display: block;

        margin: 0 auto;

        padding: 0 10px;

        font-size: 14px;

    }

    #ul{

        width: 520px;

        list-style: none;

        margin: 0 auto;

        padding: 0;

        border:1px solid #ddd;

        margin-top: -1px;

        display: none;

    }

    #ul li{

        line-height: 30px;

        padding: 0 10px;

    }

    #ul li:hover{

        background-color: #f60;

        color: #fff;

    } </style>

<script> // 2.步骤二

    // 定义demo函数 (分析接口、数据)

    function demo(data){

        var Ul = document.getElementById('ul');

        var html = '';

        // 如果搜索数据存在 把内容添加进去

        if (data.s.length) {

            // 隐藏掉的ul显示出来

            Ul.style.display = 'block';

            // 搜索到的数据循环追加到li里

            for(var i = 0;i<data.s.length;i++){

                html += '<li>'+data.s[i]+'</li>';

            }

            // 循环的li写入ul

            Ul.innerHTML = html;

        }

    }



    // 1.步骤一

    window.onload = function(){

        // 获取输入框和ul

        var Q = document.getElementById('q');

        var Ul = document.getElementById('ul');



        // 事件鼠标抬起时候

        Q.onkeyup = function(){

            // 如果输入框不等于空

            if (this.value != '') {

                // ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆JSONPz重点☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

                // 创建标签

                var script = document.createElement('script');

                //给定要跨域的地址 赋值给src

                //这里是要请求的跨域的地址 我写的是百度搜索的跨域地址

完结

Redis基于内存,常用作于缓存的一种技术,并且Redis存储的方式是以key-value的形式。Redis是如今互联网技术架构中,使用最广泛的缓存,在工作中常常会使用到。Redis也是中高级后端工程师技术面试中,面试官最喜欢问的问题之一,因此作为Java开发者,Redis是我们必须要掌握的。

Redis 是 NoSQL 数据库领域的佼佼者,如果你需要了解 Redis 是如何实现高并发、海量数据存储的,那么这份腾讯专家手敲《Redis源码日志笔记》将会是你的最佳选择。

抬起时候

        Q.onkeyup = function(){

            // 如果输入框不等于空

            if (this.value != '') {

                // ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆JSONPz重点☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆

                // 创建标签

                var script = document.createElement('script');

                //给定要跨域的地址 赋值给src

                //这里是要请求的跨域的地址 我写的是百度搜索的跨域地址

完结

Redis基于内存,常用作于缓存的一种技术,并且Redis存储的方式是以key-value的形式。Redis是如今互联网技术架构中,使用最广泛的缓存,在工作中常常会使用到。Redis也是中高级后端工程师技术面试中,面试官最喜欢问的问题之一,因此作为Java开发者,Redis是我们必须要掌握的。

Redis 是 NoSQL 数据库领域的佼佼者,如果你需要了解 Redis 是如何实现高并发、海量数据存储的,那么这份腾讯专家手敲《Redis源码日志笔记》将会是你的最佳选择。

[外链图片转存中…(img-MCCaLdjX-1630666418307)]

CodeChina开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频】

这篇关于【SpringMVC笔记,Java面试技巧和注意事项的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!