zoukankan      html  css  js  c++  java
  • springmvc(ajax返回集合、用户名校验)

    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="https://www.cnblogs.com/zhai1997/" size="30">
                 <input type="button" value="提交" onclick="go()">
             </p>
         </div>
    <div>
        <iframe id="iframe" style=" 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的用法。

  • 相关阅读:
    iOS cannot find folder xcdatamodeld Xcode 7
    ios swift generator 文章推荐
    ios swift 2 新的OptionSetType使用方法
    Maven 教程(11)— Maven远程仓库的各种配置
    Maven 教程(10)— Maven依赖详解
    Maven 教程(9)— Maven坐标详解
    Maven设置MAVEN_OPTS环境变量
    Maven 教程(7)— Maven使用的最佳实践
    Maven 教程(6)— Maven之pom.xml文件简单说明
    Maven 教程(5)— Maven目录结构及常用命令说明
  • 原文地址:https://www.cnblogs.com/zhai1997/p/12878651.html
Copyright © 2011-2022 走看看