• ajax 动态获取数据库中的值


    功能简介:  在一个输入框中输入内容 ,当内容长度>1时向后发送ajax   从数据库中获取有关文本框中的内容在前台显示, 前台设计一些点击事件,以及jquery的应用

     注意:

    request.getParameter("postData").trim() 放在判断之前可能会空指针异常  如果前面的为null null.trim() 就会报错

    如果没带参数直接访问也会报空指针的错误

    1   使用了springmvc  中的requestmapping注解  故 先附上 配置文件

    web.xml配置:

    <servlet>
    		<servlet-name>springDispatcherServlet</servlet-name>
    		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    		<init-param>
    			<param-name>contextConfigLocation</param-name>
    			<param-value>classpath:springmvc.xml</param-value>
    		</init-param>
    		<load-on-startup>1</load-on-startup>
    	</servlet>
    
    	<!-- Map all requests to the DispatcherServlet for handling -->
    	<servlet-mapping>
    		<servlet-name>springDispatcherServlet</servlet-name>
    		<url-pattern>/</url-pattern>
    	</servlet-mapping>
    

     

    springmvc.xml配置如下:
    <!-- 配置自定扫描的包 -->
    	<context:component-scan base-package="com.rl.util"></context:component-scan>
    
    	<!-- 配置视图解析器: 如何把 handler 方法返回值解析为实际的物理视图 -->
    	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    		<property name="prefix" value="/WEB-INF/views/"></property>
    		<property name="suffix" value=".jsp"></property>
    	</bean>
    

      

    前台页面如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    <style>
    			input[name]{
    				500px;
    				height: 20px;
    				align-self: center;
    				vertical-align:middel;
    				margin-left:300px;
    			}
    			
    			#div1{
    				 500px;
    				height: 230px;
    				border: 1px solid black;
    				list-style:none;
    				margin-left:300px;
    				display: none;
    				
    			}
    			.mouseOver{
    				background-color: red;
    			}
    		</style>
    		<script type="text/javascript" src="static/bootstrap/js/jquery.min.js" ></script>
    </head>
    <body>
    	<input id="sousuo" type="text" name="inputText" placeholder="请输入" />
    		<input type="button" value="搜索" />
    		<br>
    	<div id="div1">
    			<li>北京</li>
    			<li>天‚</li>
    			<li>上‚</li>
    			
    	</div>
    	
    	 <a href="ad">dasf</a>
    </body>
    <script>
    		$("#sousuo").focus();
    			$("#sousuo").blur(function(){
    					$("#div1").hide(1000);
    			})
    		$(document).ready(function(){
    			$("#sousuo").bind("keyup",function(){
    			var $inpu=$("#sousuo").val();
    						
    				if($inpu.length>1){
    					//alert($inpu);
    
    					$.ajax({
    			            async : false,
    			            cache : false,
    			            type : 'POST',
    			            url : '/ajax_jso/ad',
    			            dataType : "json",
    			          	data : {"postData":$inpu},            
    			            error : function() {
    			                alert('请求失败 ');
    			            },
    			            success : function(data) {
    			              /*  */
    			               $("li").text("");
    			               for(var i=0;i<data.length;i++){
    			            	  /*  . */
    				               var $li = $("<li></li>");
    				               $li.text(data[i]);
    				               $("#div1").append($li);
    			               }
    			               
    			            }
    
    			        });
    					
    					$("#div1").show(1000)
    					//setTimeout(,5000)
    					
    				}
    				
    				$("li").mouseover(function(){
    					$("li").removeClass();		
    					$(this).addClass("mouseOver");
    					
    				});
    				$("li").click(function(){
    					$("#sousuo").val($(this).text());
    				})
    			});
    			
    			
    		});
    			
    			
    			
    	</script>
    </html>
    

      后台接受请求的代码如下:

    package com.rl.util;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.util.ArrayList;
    import java.util.List;
    
    import javax.servlet.http.HttpServletRequest;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    
    import net.sf.json.JSONArray;
    
    @Controller
    public class Control {
    	@RequestMapping("/ad")
    	@ResponseBody
    	public 	String  getList(HttpServletRequest request) {
    		//HttpServletRequest request=  ServletActionContext.getRequest();  
    		List<String> list=new ArrayList<>();
    		Gson gson2 = new GsonBuilder().enableComplexMapKeySerialization().create(); 
    		try {
    			
    			Class.forName("com.mysql.jdbc.Driver");// 导入驱动(jar包)
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    		String name = "";
    		Connection conn = null;
    		try {
    			conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost:3306/xxff", "root", "123456");// 建立连接
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    
    		// String sql = "select name,email,dob from student";//建立SQL语句
    		System.out.println( request.getParameter("postData"));
    		  String postData =  request.getParameter("postData");  
    		  if(postData==null){
    			  System.out.println("null    "+"postData");
    		  }
    		  
    		  else{
    			  postData = postData.trim();
    			  System.out.println("TrubleShooting.java  timestap = "+postData);
    				String sql = "SELECT  login_name FROM tab_account WHERE login_name LIKE '%"
    						+ ""
    						+postData+ "%'";//where login_name like '%postData%'
    				/*List<Map<String, String>> list = new ArrayList<>();
    				Map<String, String> map = new HashMap<>();
    				*/
    				
    				try {
    					Statement stmt = (Statement) conn.createStatement();
    					ResultSet rs = stmt.executeQuery(sql);
    					// cursor
    					while (rs.next()) {
    						name = rs.getString(1);
    						//list.add(name);
    						/*
    						 * String email = rs.getString(2); String dob = rs.getString(3);
    						 */
    						//System.out.println(name/* +" , "+email+" , "+dob */);
    						System.out.println(name);
    						//map.put("name", name);
    						list.add(name);
    						//list转成json
    				        
    					}
    				} catch (SQLException e) {
    					e.printStackTrace();
    				} finally {
    					if (conn != null)
    						try {
    							conn.close();// 关闭连接
    						} catch (SQLException e) {
    							e.printStackTrace();
    						}
    				}
    		  }
    		 
    		String json=JSONArray.fromObject(list).toString();
    		JSONArray jsonArray = JSONArray.fromObject(json);
    		 //List<String> list2 = (List) JSONArray.toCollection(jsonArray);
    		return json;
    	}
    }
    

      

    
    

    jquery中的ajax方法参数的用法和他的含义: 

    1.url
      要求为String类型的参数,(默认为当前页地址)发送请求的地址

    2.type
      要求为String类型的参数,请求方式(postget)默认为get。注意其他http请求方法,例如put和delete也可以使用,但仅部分浏览器支持。

    3.timeout
      要求为Number类型的参数,设置请求超时时间(毫秒)。此设置将覆盖$.ajaxSetup()方法的全局设置。

    4.async
      要求为Boolean类型的参数,默认设置为true,所有请求均为异步请求。如果需要发送同步请求,请将此选项设置为false。注意,同步请求将锁住浏览器,用户其他操作必须等待请求完成才可以执行。

    5.cache
      要求为Boolean类型的参数,默认为true(当dataType为script时,默认为false),设置为false不会从浏览器缓存中加载请求信息

    6.data
      要求为ObjectString类型的参数,发送到服务器的数据。如果已经不是字符串,将自动转换为字符串格式get请求中将附加在url后。防止这种自动转换,可以查看  processData(防止自动转换)选项。对象必须为key/value格式,例如{foo1:"bar1",foo2:"bar2"}转换为&foo1=bar1&foo2=bar2。如果是数组,JQuery将自动为不同值对应同一个名称。例如{foo:["bar1","bar2"]}转换为&foo=bar1&foo=bar2。

    7.dataType
      要求为String类型的参数,预期服务器返回的数据类型。如果不指定,JQuery将自动根据http包mime信息返回responseXML或responseText,并作为回调函数参数传递。可用的类型如下:
      xml:返回XML文档,可用JQuery处理。
      html:返回纯文本HTML信息;包含的script标签会在插入DOM时执行。
      script:返回纯文本JavaScript代码。不会自动缓存结果。除非设置了cache参数。注意在远程请求时(不在同一个域下),所有post请求都将转为get请求。
      json:返回JSON数据。
      jsonp:JSONP格式。使用SONP形式调用函数时,例如myurl?callback=?,JQuery将自动替换后一个“?”为正确的函数名,以执行回调函数。
      text:返回纯文本字符串。

     8.contentType
    要求为String类型的参数,当发送信息至服务器时,内容编码类型默认为"application/x-www-form-urlencoded"。该默认值适合大多数应用场合。

    9.success

      要求为Function类型的参数,请求成功后调用的回调函数,有两个参数。
             (1)由服务器返回,并根据dataType参数进行处理后的数据。
             (2)描述状态的字符串。
             function(data, textStatus){
                //data可能是xmlDoc、jsonObj、html、text等等
                this;  //调用本次ajax请求时传递的options参数
             }

    10.error:
    要求为Function类型的参数,请求失败时被调用的函数。该函数有3个参数,即XMLHttpRequest对象、错误信息、捕获的错误对象(可选)。ajax事件函数如下:
           function(XMLHttpRequest, textStatus, errorThrown){
              //通常情况下textStatus和errorThrown只有其中一个包含信息
              this;   //调用本次ajax请求时传递的options参数
           }

  • 相关阅读:
    python全栈开发_day17_时间,系统模板和序列化
    python全栈开发_day15_函数回调和模块
    python全栈开发_day16_包
    pygame学习_part1_pygame写程序前的准备工作
    python全栈开发_day15_模块学习
    不确定性推理复习
    hibernate级联关系
    hibernate双向一对多关联关系
    实践:hibernate-one2many(单向)
    我的学习(修改完善)
  • 原文地址:https://www.cnblogs.com/MyJavaStudy/p/9126218.html
Copyright © 2020-2023  润新知