首页 > 其他分享 >案例

案例

时间:2022-08-22 18:45:10浏览次数:57  
标签:province String id 案例 json public name

案例

需求:

  1. 提供index.html页面 页面中有一个省份 下拉列表
  2. 当页面加载完成后 发送ajax请求 加载所有省份

java代码实现

配置文件

数据库配置文件:druid.properties

driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql:///day23
username=root
password=root
initialSize=5
maxActive=10
maxWait=3000

实体类

public class Province {

    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

ProvinceDao接口

public interface ProvinceDao {

    public List<Province> findAll();
}

ProvinceDaoImpl类

public class ProvinceDaoImpl implements ProvinceDao {

    //1.声明成员变量 jdbctemplement
    private JdbcTemplate template = new JdbcTemplate(JDBCUtils.getDataSource());

    @Override
    public List<Province> findAll() {
        //1.定义sql
        String sql = "select * from province ";
        //2.执行sql
        List<Province> list = template.query(sql, new BeanPropertyRowMapper<Province>(Province.class));
        return list;
    }
}

ProvinceService接口

public interface ProvinceService {

    public List<Province> findAll();

    public String findAllJson();
}

ProvinceServiceImpl类

public class ProvinceServiceImpl implements ProvinceService {
    //声明dao
    private ProvinceDao dao = new ProvinceDaoImpl();

    @Override
    public List<Province> findAll() {
        return dao.findAll();
    }

    /**
        使用redis缓存
     */

    @Override
    public String findAllJson() {
        //1.先从redis中查询数据
        //1.1获取redis客户端连接
        Jedis jedis = JedisPoolUtils.getJedis();
        String province_json = jedis.get("province");

        //2判断 province_json 数据是否为null
        if(province_json == null || province_json.length() == 0){
            //redis中没有数据
            System.out.println("redis中没数据,查询数据库...");
            //2.1从数据中查询
            List<Province> ps = dao.findAll();
            //2.2将list序列化为json
            ObjectMapper mapper = new ObjectMapper();
            try {
                province_json = mapper.writeValueAsString(ps);
            } catch (JsonProcessingException e) {
                e.printStackTrace();
            }

            //2.3 将json数据存入redis
            jedis.set("province",province_json);
            //归还连接
            jedis.close();

        }else{
            System.out.println("redis中有数据,查询缓存...");
        }


        return province_json;
    }
}

工具类:JDBCUtils

 

public class JDBCUtils {

    private static DataSource ds ;

    static {

        try {
            //1.加载配置文件
            Properties pro = new Properties();
            //使用ClassLoader加载配置文件,获取字节输入流
            InputStream is = JDBCUtils.class.getClassLoader().getResourceAsStream("druid.properties");
            pro.load(is);

            //2.初始化连接池对象
            ds = DruidDataSourceFactory.createDataSource(pro);

        } catch (IOException e) {
            e.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取连接池对象
     */
    public static DataSource getDataSource(){
        return ds;
    }


    /**
     * 获取连接Connection对象
     */
    public static Connection getConnection() throws SQLException {
        return  ds.getConnection();
    }
}

ProvinceServlet类

@WebServlet("/provinceServlet")
public class ProvinceServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       /* //1.调用service查询
        ProvinceService service = new ProvinceServiceImpl();
        List<Province> list = service.findAll();
        //2.序列化list为json
        ObjectMapper mapper = new ObjectMapper();
        String json = mapper.writeValueAsString(list);*/

        //1.调用service查询
        ProvinceService service = new ProvinceServiceImpl();
        String json = service.findAllJson();


        System.out.println(json);
        //3.响应结果
        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);
    }
}

index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    
    <script src="js/jquery-3.3.1.min.js"></script>
    
    <script>
        $(function () {
           
            //发送ajax请求,加载所有省份数据
            $.get("provinceServlet",{},function (data) {
                //[{"id":1,"name":"北京"},{"id":2,"name":"上海"},{"id":3,"name":"广州"},{"id":4,"name":"陕西"}]

                //1.获取select
                var province = $("#province");
                //2.遍历json数组
                $(data).each(function () {
                    //3.创建<option>
                    var option = "<option name='"+this.id+"'>"+this.name+"</option>";

                    //4.调用select的append追加option
                    province.append(option);
                });


            });
            
        });
        
        
    </script>
    
</head>
<body>



        <select id="province">
            <option>--请选择省份--</option>

        </select>
</body>
</html>

标签:province,String,id,案例,json,public,name
From: https://www.cnblogs.com/aimz01/p/16613857.html

相关文章

  • Jedis查询数据库案例
    Jedis查询数据库案例分析:环境搭建:sql:CREATETABLEprovince(--创建表idINTPRIMARYKEYAUTO_INCREMENT,NAMEVARCHAR(20)NOTNULL);--插入......
  • elementui步骤条页面开发案例
    <template><divid="bdy"><divclass="tbody"><el-steps:active="active"finish-status="success"><el-steptitle="创建项目"></el-step>......
  • Spring入门案例-基于XML管理bean
    1.入门案例--hellospring创建MavenModule在pom.xml中引入依赖<dependencies><!--基于Maven依赖传递性,导入spring-context依赖即可导入当前所需所有jar......
  • 案例_校验用户名是否存在
    案例_校验用户名是否存在服务器响应的数据在客户端使用时要想当做json数据格式使用$.get(type):将最后一个参数typer指定为“json”在服务器端设置MIME类型response......
  • Redis 实际案例示范
    缓存REDIS实战操作记录Redis解决并发的方案收藏博客:Tags-王亚普的博客|WypBlog......
  • 案例分析 | 二手车零售DTC黑马Carvana卖车卖出 500 亿美元市值
    汽车经销商的未来正在从产品驱动的模式转向由客户体验、忠诚度、品牌提供的移动服务驱动的二手车零售DTC模式,去适应客户不断变化的新期待。汽车零售商必须考虑颠覆目前的......
  • 校验用户名是否存在案例
    案例校验用户名是否存在服务器响应的数据,在客户端使用时,要想当作json数据格式使用$.get(type):将最后一个参数tupe指定为"json"在服务器端设施MIME类型response.se......
  • json转java对象以及校验用户名是否存在案例
    json转java对象使用步骤:1、导入jackson的相关jar包2、创建Jackson核心对象ObjectMapper3、调用ObjectMapper的相关方法进行转换1、readValue(js......
  • 校验用户名是否存在案例
    校验用户名是否存在案例1.服务器响应的数据,在客户端使用时,要想当做json数据格式使用1.$.get(type):将最后一个参数type指定为"json"2.在服务器端设置MIME类型......
  • JQuery案例
    JQuery案例广告的自动显示和隐藏案例需求:当页面加载完3秒后自动显示广告广告显示5秒后自动消失分析:使用定时器来完成setTimeout(执行一次定时器)分析完成JQu......