利用Ajax实现在页面显示局部刷新

使用三层架构(数据访问层、业务逻辑层、表示层)使得编程更加清晰。
util包,用于加载数据库驱动,获得驱动管理信息。

    public Connection bdHelper{
        private final String DRIVER ="com.mysql.jdbc.Driver";
        private final String URL = "jdbc:mysql://localhost:3306/mySQL_name";
        private final String USER ="root";
        private String PWD = "root";
        Connection con = null;
        try{
            Class.forName(DRIVER);
            con = DrverManager.getConnection(URL,USER,PWD);
        }catch(Exception e){
            e.PrintStackTrace();
        }
        return con;
    }
        public void close(ResultSet rs,PreparedStatement ps , Connection con){
            if(rs!=null){rs.close();}
            if(ps!=null){ps.close();}
            if(con!=null){con.close();}
    }

用一个entity包封装所要查询的数据库信息(com.lxchen.entity)

        public class Student{
            private int id;
            private String name;
            private int age;
            private String sex;
            public Student(){
        }
            public Student(int id, String name, int age, String sex){
                this.id = id;
                this.name = name;
                this.age = age;
                this.sex = sex;
        }   
            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;   
        }
            public int getAge(){
                return age;
        }
            public void setAge(int age){
                this.age = age; 
        }
            public String getSex(){
                return sex;
        }
            public void setSex(int sex){
                this.sex = sex; 
        }

数据访问层(com.lxchen.DAO),用于规定一个查询接口。

         public interface StuDAO{
            public List<student> StuSelectDAO();
    }

数据访问层的实现(com.lxchen.DAOImpl),用于实现查询接口,并将结果返回给业务逻辑层

    public class StuDAOImpl implements StuDAO{
        public List<Student> StuSelectDAO(){
            dbHelper db = new dbHelper();
            Connection con = null;
            PreparedStatement ps = null;
            ResultSet rs =null;
            List<Student> lst = new ArrayList<Student>();
            try{
                con = db.getConnection();
                ps = con.prepareStatement("select * from table_name");
                rs = ps.executeQuery();
                while(rs.next()){
        lst.add(new Student(rs.getInt(1),rs.getString(2),rs.getInt(3),rs.getString(4)));
                }
            }catch(Exception e){
                e.PrintStackTrace();
            }finally{
                try{
                    db.closer(rs,ps,con);
                }catch(Exception e){
                    e.PrintStackTrace();
                }
            }
            return lst;
        }
    }

业务逻辑层(com.lxchen.Service).规定一个接口,用于从数据访问层获取查询结果。

        public interface StuService{
            public List<Student> StuSelectService();
    }

业务逻辑实现层(com.lxchen.ServiceImpl).用于将从数据访问层获得的结果,返回给表示层。

        public class StuServiceImpl implements StuService{
            public List<Student> StuSelectServiceImpl(){
                StuDAO sd = new StuDAOImpl();
                return sd.StuSelectDAO();
        }
    }

建立一个Servlet容器(com.lxchen.Servlet),用于存放java代码实现在客户端页面显示的内容.

        public class AjaxServlet extends HttpServlet(){
            //重写service方法
           protected void service(HttpServletRequest request , HttpServletResponse response)throws ServletException , IOException{
            StuService ss = new StuServiceImpl();
            List<Student> lst = ss.StuSelectServiceImpl();
            response.setCharacterEncoding("utf-8");//防止页面显示乱码
            response.setContentType("text/html"); //防止页面显示乱码
            PrintWriter out = response.getWriter();//建立IO输出流,向页面输出信息
            out.print("<table>");
            for(int i=0;i<lst.size();i++){
                out.print("<tr>");
                out.print("<td>"+lst.get(i).getId()+"</td>");
                out.print("<td>"+lst.get(i).getName()+"</td>");
                out.print("<td>"+lst.get(i).getAge()+"</td>");
                out.print("<td>"+lst.get(i).getSex()+"</td>");
                out.print("</tr>");
            }
            out.print("</table>");
        } 
    }

在web.xml配置文件中,配置Servlet。

    <servlet>
        <servlet-name>StuServlet</servlet-name>
        <servlet-class>com.lxchen.Servlet.AjaxServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>StuServlet</servlet-name>
        <url-pattern>/AJAXServlet</url-patern>
    </servlet-mapping>

在显示页面进行配置(showPage.jsp)

<head>
    <script type="text/javascript">
        var xmlhttp;
        function toClick(){
            if(window.XMLHttpRequest){
                //判断Ajax是否支持IE7+,chrome,FireFox,etc
                xmlhttp = new XMLHttpRequest();
            }eler if(window.ActiveXObject){
                //判断Ajax是否支持IE5,IE6低版本IE浏览器.
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            if(xmlhttp!=null){
                xmlhttp.onreadystatechange = state_Change;
                xmlhttp.open("post","AJAXServlet",true);
                xmlhttp.send();
            }
        }
        function state_Change(){
            if(xmlhttp.readyState==4&&xmlhttp.status == 200){
                document.getElementById("info").innerHTML = xmlhttp.responseText;
            }
        }
        <body>
            <input type="button" value="显示" onclick="toClick()" />
            <p><div id="info">INFO will be listed in here</div></p>
        </body>
    </script>
</head>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值