需求:
1.提供一個index.html頁面,頁面中有個省份,下拉串列
2.當頁面加載完成時,發送ajax請求,加載所有省份
前期專案初步搭建:
index.html
$(function(){
$.get("url",{},funtion(data){
//url-查詢servlet路徑,{}不要引數,data為回傳的資料,填充到省份串列中
//因為有查詢資料庫因此有三層架構servlet(findProvinceServlet)-service(ProvinceService)-dao(ProviniceDao)查詢資料庫
})
})
ProvinceDao
1.宣告JDBCTemplate,查詢資料庫
2.回傳查詢的值(List集合)
ProvinceService
1.宣告dao
2.通過Dao回傳查詢所有的結果集
findProvinceServlet
1.呼叫service完成查詢,回傳List<Province>
2.將資料回傳,因為采用的是Ajax請求,因此需要將資料序列化Json
3.回應
整體代碼:
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="https://www.cnblogs.com/stormtides/p/js/jquery-3.3.1.min.js"></script>
<script>
$(function () {
$.get("provinceServlet",{},function (data) {
var province=$("#province");
$(data).each(function () {
var option="<option name='"+this.id+"'>"+this.name+"</option>";
province.append(option);
});
});
});
</script>
</head>
<body>
<select id="province">
<option>---請選擇省份---</option>
</select>
</body>
</html>
ProvinceDao.java
package cn.stormtides.dao.impl;
import cn.stormtides.dao.ProvinceDao;
import cn.stormtides.domain.Province;
import cn.stormtides.util.JDBCUtils;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import java.util.List;
public class ProvinceDaoImpl implements ProvinceDao {
//宣告成員變數
private JdbcTemplate template=new JdbcTemplate(JDBCUtils.getDataSource());
@Override
public List<Province> findAll() {
String sql="select * from province";
List<Province> list = template.query(sql, new BeanPropertyRowMapper<>(Province.class));
return list;
}
}
ProvinceService.java
package cn.stormtides.service.impl;
import cn.stormtides.dao.ProvinceDao;
import cn.stormtides.dao.impl.ProvinceDaoImpl;
import cn.stormtides.domain.Province;
import cn.stormtides.jedis.util.JedisPoolUtils;
import cn.stormtides.service.ProvinceService;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import redis.clients.jedis.Jedis;
import java.util.List;
public class ProvinceServiceImpl implements ProvinceService {
//宣告dao
private ProvinceDao dao=new ProvinceDaoImpl();
@Override
public List<Province> findAll() {
return dao.findAll();
}
/**
* 使用redis快取
* @return province_json
*/
@Override
public String findAllJson() {
Jedis jedis= JedisPoolUtils.getJedis();
String province_json = jedis.get("province");
if (province_json==null || province_json.length()==0){
System.out.println("redis沒資料,查詢資料庫");
List<Province> ps=dao.findAll();
ObjectMapper mapper=new ObjectMapper();
try {
province_json=mapper.writeValueAsString(ps);
} catch (Exception e) {
e.printStackTrace();
}
jedis.set("province",province_json);
jedis.close();
}else {
System.out.println("redis中有資料");
}
return province_json;
}
}
findProvinceServlet.java
package cn.stormtides.web.servlet;
import cn.stormtides.domain.Province;
import cn.stormtides.service.ProvinceService;
import cn.stormtides.service.impl.ProvinceServiceImpl;
import com.fasterxml.jackson.databind.ObjectMapper;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet("/provinceServlet")
public class provinceServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//呼叫service查詢
ProvinceService service=new ProvinceServiceImpl();
// //使用普通程序
// List<Province> list = service.findAll();
// //序列化list為json
// ObjectMapper mapper=new ObjectMapper();
// String json=mapper.writeValueAsString(list);
//使用redis快取
String json=service.findAllJson();
System.out.println(json);
//回應結果
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doPost(request,response);
}
}
完整代碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/2475.html
標籤:NoSQL
