1、iframe测试体验页面无刷新

(1)书写一个页面


<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>iframe测试体验页面无刷新</title>     <script>         function go() {             var url=document.getElementById("url").value;             document.getElementById("iframe").src=url;         }     </script> </head> <body>      <div>          <p>请输入地址:</p>          <p>              <input type="text" id="url" value  size="30">              <input type="button" value="提交" onclick="go()">          </p>      </div> <div>     <iframe id="iframe" style="width: 80%;height: 500px"></iframe> </div> </body> </html>


该页面中的js方法获取到输入框中的数据,并将该数据赋给iframe的src属性

(2)测试:

springmvc(ajax返回集合、用户名校验)_mvc


在测试时,只是浏览器页面的局部刷新,浏览器的地址框中的内容并未改变。


2、ajax在springmvc中的运用

(1)配置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_4_0.xsd"          version="4.0">     <!-- 前端控制器 -->     <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:applicationContext.xml</param-value>         </init-param>         <load-on-startup>1</load-on-startup><!--启动服务器即创建-->     </servlet>     <servlet-mapping>         <servlet-name>springmvc</servlet-name>         <url-pattern>/</url-pattern>     </servlet-mapping>     <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> </web-app>


(2)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="pers.zhb.controller"></context:component-scan>     <!--静态资源过滤,让Springmvc不处理静态资源,如css、js等-->     <mvc:default-servlet-handler></mvc:default-servlet-handler>     <!--使得注解生效-->     <mvc:annotation-driven></mvc:annotation-driven>     <!--视图解析器,前缀和后缀-->     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="internalResourceViewResolver">         <property name="prefix" value="/"></property>         <property name="suffix" value=".jsp"></property>     </bean>     <mvc:annotation-driven></mvc:annotation-driven> </beans>


(3)在pom.xml中导入依赖

(4)书写jsp页面


<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html>   <head>     <title>ajax</title>     <script src="${pageContext.request.contextPath}/js/jquery-3.5.1.js"></script>     <script>       function a(){         $.post({              url:"${pageContext.request.contextPath}/a1",              data:{"name":$("username").val()},              success:function (data) {                alert(data);           }}         )       }     </script>   </head>    <body>   用户名:<input type="text" id="username" onblur="a()">   </body> </html>


在js方法中书写了以post方式要提交的路径,提交的数据以及回调函数,在这里回调函数能够获取控制器返回的数据并展示在页面,函数能够被鼠标事件触发

(5)控制器


@RequestMapping("a1")     public void a1(String name, HttpServletResponse response)throws IOException {         System.out.println(name);         if ("zhai".equals(name)){             response.getWriter().print("true");         }else {             response.getWriter().print("false");         }     }


获取到页面提交的数据并返回相应的数据

(6)测试

springmvc(ajax返回集合、用户名校验)_数据_02

springmvc(ajax返回集合、用户名校验)_spring_03


在鼠标事件触发前后,浏览器的地址栏并未发生改变,这是因为在处理器中既没有请求转发又没有重定向,处理器将数据返回给回调函数


3、返回json类型的数据

(1)书写教师类:


@Setter @Getter @ToString @AllArgsConstructor @NoArgsConstructor public class Teacher {     private String teacherno;     private String tname; }


(2)书写控制器:


@RequestMapping("a2")     public List<Teacher> a2(){         List<Teacher> teachers=new ArrayList<Teacher>();         teachers.add(new Teacher("20200512","zhai"));         teachers.add(new Teacher("20200512","zhao"));         teachers.add(new Teacher("20200512","zhang"));         return teachers;     }


(3)页面:


<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head>     <title>test</title>     <script src="${pageContext.request.contextPath}/js/jquery-3.4.1.js"></script>     <script>         $(function () {             $("#btn").click(function () {                 $.post("${pageContext.request.contextPath}/a2",function(data) {                     var html="";                     for(let i=0;i<data.length;i++)html += "<tr>" + "<td>" + data[i].teacherno + "</td><td>" + data[i].tname + "</td></tr>"                     $("#content").html(html);                 });             })         });     </script> </head>  <body>     <input type="button" value="加载数据" id="btn"> <table>     <tr>         <td>姓名</td>         <td>年龄</td>     </tr>     <tbody id="content">      </tbody>   </table> </body> </html>


(4)测试:

如果直接访问控制器返回的是json类型的数据:

springmvc(ajax返回集合、用户名校验)_mvc_04

在控制器返回数据后,前端页面获取到json类型的数据并对其进行遍历


4、用户名校验

(1)页面:


<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head>     <title>login</title>     <script src="${pageContext.request.contextPath}/js/jquery-3.4.1.js"></script>     <script>         function a1() {             $.post({                 url:"${pageContext.request.contextPath}/a3",                 data:{"name":$("#name").val()},                 success:function(data) {                  if(data.toString()==='ok'){                      $("#userinfo").css("color","yellow");                  }else{                      $("#userinfo").css("color","red");                  }                  $("#userinfo").html(data);                 }             })         }         function a2() {             $.post({                 url:"${pageContext.request.contextPath}/a3",                 data:{"pwd":$("#pwd").val()},                 success:function(data) {                     if(data.toString()==='ok'){                         $("#pwdinfo").css("color","yellow");                     }else{                         $("#pwdinfo").css("color","red");                     }                     $("#pwdinfo").html(data);                 }             })         }     </script> </head> <body> <p>     用户名:<input type="text" id="name" onblur="a1()">     <span id="userinfo"></span> </p> <p>     密码:  <input type="password" id="pwd" onblur="a2()">     <span id="pwdinfo"></span> </p>  </body> </html>


(2)处理器:


@RequestMapping("a3")     public String a3(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;     }


(3)测试:

springmvc(ajax返回集合、用户名校验)_spring_05


在实际开发中用户名和密码需要从数据库获取,这里只是为了说明ajax的用法。



每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛