JavaWeb项目,用ajax请求(不刷新页面)每隔一段时间请求后台json数据,实现实时更新数据需求

1、javascript前端jQuery代码:

/*动态加载工厂函数*/
    $(function(){
    /*实时查询信息*/
    realTimeQuery();
    });

/*实时信息*/

    function realTimeQuery(){
    $.ajax("realTime.do",{
 type:"post",
 data:{pageSize:$("#pageSize").val()},
 dataType:"json",
 success:function(data){        //参数data为后台获取的数据
    $(".log").remove();
               for(i in data.data){        //data.data指的是数组,i为数组的索引
                       var tr;

               tr=  '<td>'+data.data[i].received+'</td>'+'<td>'+data.data[i].sourceIp+'</td>'+

                                       '<td>'+data.data[i].sourceHostname+'</td>'+'<td>'+data.data[i].facility+'</td>'+

                                       '<td>'+data.data[i].severity+'</td>'+'<td>'+data.data[i].origin+'</td>'+

                                       '<td>'+data.data[i].tag+'</td>'+

                                       '<td colspan="3">'+data.data[i].message+'</textarea></td>';

    if(i%2==0){
$("#table1").append('<tr class="log" style="background-color:lightblue;">'+tr+'</tr>');
    }else{
$("#table1").append('<tr class="log">'+tr+'</tr>');
    }
               }
},
error:function(){
console.log("实时信息,请求失败");
    clearTimeout(t);
    }
    });
       t=setTimeout('realTimeQuery()', 20000);//每隔20秒,查询一次。

    };

2、java后端代码:

/**
 * 信息处理控制层
 * @author Administrator
 *
 */
@Controller
public class SyslogController {
@Resource
private SyslogService syslogService;

        /**
* 实时信息展示
*/
@RequestMapping("/realTime.do")
public  String realTimeQuery(Integer pageSize,HttpServletRequest request,HttpServletResponse response){
//判断是否为登录用户
String userCode = (String)request.getSession().getAttribute("userCode");
if(userCode!=null&&userCode!=""){
//实时查询
Page page = new Page(1,pageSize,pageSize,"","","","","","","","");
List<Syslog> list = this.syslogService.getSyslogList(page);
//返回数据
JSONArray jsonArray = new JSONArray();
for(Syslog syslog:list){
JSONObject jsonLog = new JSONObject();
jsonLog.put("received", syslog.getReceived());
jsonLog.put("sourceIp", syslog.getSourceIp());
jsonLog.put("sourceHostname", syslog.getSourceHostname());
jsonLog.put("facility", syslog.getFacility());
jsonLog.put("severity", syslog.getSeverity());
jsonLog.put("origin", syslog.getOrigin());
jsonLog.put("tag", syslog.getTag());
jsonLog.put("message", syslog.getMessage());
jsonArray.add(jsonLog);
}
JSONObject result = new JSONObject();
result.put("data", jsonArray);
try {
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json" );
PrintWriter wr = response.getWriter();
wr.write(result.toString());
wr.flush();
wr.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return "/main.jsp";

}

}

3、web.xml配置文件

<!-- DispatcherServlet请求分发 -->
  <servlet>
  <servlet-name>DispatcherServlet</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <init-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext.xml</param-value>
  </init-param>
  </servlet>
  <servlet-mapping>
  <servlet-name>DispatcherServlet</servlet-name>
  <url-pattern>*.do</url-pattern>

  • 0
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设你使用的是MySQL数据库,以下是JavaWeb中查询某一时间段的数据的代码实现: 1.首先,你需要在Java代码中编写SQL语句来查询数据。例如,下面的语句查询了某个表中在指定时间段内的数据: ```sql SELECT * FROM table_name WHERE date_column BETWEEN start_date AND end_date; ``` 其中,`table_name` 是你要查询的表名,`date_column` 是表中表示时间的列名,`start_date` 和 `end_date` 是你要查询的时间段。 2.在JavaWeb中,你需要编写Servlet来接收前端传来的时间段参数,并且调用数据库查询数据。下面是一个简单的Servlet示例代码: ```java @WebServlet("/queryData") public class QueryDataServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 从前端获取时间段参数 String startDate = request.getParameter("startDate"); String endDate = request.getParameter("endDate"); // 调用数据库查询数据 try { Connection conn = DBUtil.getConnection(); String sql = "SELECT * FROM table_name WHERE date_column BETWEEN ? AND ?"; PreparedStatement pstmt = conn.prepareStatement(sql); pstmt.setString(1, startDate); pstmt.setString(2, endDate); ResultSet rs = pstmt.executeQuery(); // 处理查询结果 while (rs.next()) { // 获取每一行数据的各个字段值 String field1 = rs.getString("field1"); String field2 = rs.getString("field2"); // ... // 将数据传递给前端 // ... } // 关闭资源 rs.close(); pstmt.close(); conn.close(); } catch (SQLException e) { e.printStackTrace(); } } } ``` 在上面的代码中,我们使用了一个 `DBUtil` 工具类来获取数据库连接。在实际使用中,你需要根据自己的情况进行修改。另外,你还需要根据实际情况将查询结果传递给前端页面,例如使用 `request.setAttribute()` 和 `request.getRequestDispatcher().forward()` 等方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值