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)测试:
在测试时,只是浏览器页面的局部刷新,浏览器的地址框中的内容并未改变。
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)测试
在鼠标事件触发前后,浏览器的地址栏并未发生改变,这是因为在处理器中既没有请求转发又没有重定向,处理器将数据返回给回调函数
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类型的数据:
在控制器返回数据后,前端页面获取到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)测试:
在实际开发中用户名和密码需要从数据库获取,这里只是为了说明ajax的用法。
每个人都会有一段异常艰难的时光 。 生活的压力 , 工作的失意 , 学业的压力。 爱的惶惶不可终日。 挺过来的 ,人生就会豁然开朗。 挺不过来的 ,时间也会教你 ,怎么与它们握手言和 ,所以不必害怕的。 ——杨绛