• myEclipse,web项目连接数据库


    下面的结构图

    1.在src你创建com.hqyj.wj.model建立model包,model里放数据库的元素,User.java的截图

    package com.hqyj.wj.model;
    //用户信息表
    public class User {
    	 private int id;
    	 private String name;
    	 private String birthday;
    	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 String getBirthday() {
    		return birthday;
    	}
    	public void setBirthday(String birthday) {
    		this.birthday = birthday;
    	}
    }
    

      

    2.在src你创建com.hqyj.wj.dao.inf建立包,这个包是放接口类,这是UserDaoInf的截图

    package com.hqyj.wj.dao.inf;
    import java.util.List;
    import com.hqyj.wj.model.User;
    /**
     * 数据访问层的接口定义数据接口的方法
     * 
     */
    public interface UserDaoInf {
     //定义一个查询方法
    	List<User> search();
    	
    }

    3.在src你创建com.hqyj.wj.dao建立包,这个包连接数据库,及实现上面的接口类

    package com.hqyj.wj.dao;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.util.ArrayList;
    import java.util.List;
    
    import com.hqyj.wj.dao.inf.UserDaoInf;
    import com.hqyj.wj.model.User;
    
    /**
     * 
     * @author wl 数据访问接口
     */
    public class UserDao implements UserDaoInf {
    	// 数据访问数据库的连接对象
    	protected Connection con = null;
    	//预编译你写的sql语句
    	protected PreparedStatement ps=null;
    	//查询预编译的sql语句
    	protected ResultSet  rs=null;
    	
    	
    	// 获取数据库链接
    	@SuppressWarnings("finally")
    	public Connection getCon() {
    		try {
    			// 加载mysql驱动
    			Class.forName("com.mysql.jdbc.Driver");
    			//获取数据库链接
    			con=DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/image?characterEncoding=utf8", "root", "root");
    			System.out.println("链接成功");
    			return con;
    		} catch (Exception e) {
    			System.out.println("链接失败"+e.getMessage());
    			return null;
    		
    //		} finally {
    //			try {
    //				con.close();
    //			} catch (SQLException e) {
    //				// TODO Auto-generated catch block
    //				e.printStackTrace(); 
    //				return null;
    //			}
    			//
    		}
    
    	}
    /**
     * 查询方法
     */
    	
    	public List<User> search() {
    		List<User> list=new ArrayList<User>();
    		try {
    			//定义一个sql语句
    			//String sql="SELECT a.id as 序号,a.salary as '薪水',b.`name` as '姓名'  from salary a LEFT JOIN `user` b on a.u_id=b.id";
    			 String sql="SELECT * from user";
    			 //获取数据库连接
    			 con=getCon(); 
    			 //预编译sql语句
    			ps=con.prepareStatement(sql);
    			 //把编译出来的结果集装载到ResultSet对象里面
    			 rs=ps.executeQuery();
    			// rs=statement.executeQuery(sql);
    			 //取出ResultSet里的结果集装载到数据模型里
    			 while(rs.next()){
    				 User user=new User();
    				 user.setName(rs.getString("name"));
    				 user.setBirthday(rs.getString("birthday"));
    				 user.setId(Integer.parseInt(rs.getString("id")));
                      list.add(user);
    			 }
    		} catch (Exception e) {
    			System.out.println("查询错误"+e.getMessage());
    		}finally{
    			try {
    				rs.close();
    				ps.close();
    				con.close();
    			} catch (Exception e2) {
    				e2.printStackTrace();
    			}
    		}
    
    		return list;
    	}
    
    }
    

     

    5.要引入数据库包mysql-connector-java-commercial-5.1.25-bin.jar,和json-lib-2.2.3-jdk15.jar在项目名字上右键->properties->java Build Path->Libraries->Add External Jars然后选择你下载的包

    6.在src下面创建测试类

      

    import java.util.List;
    
    import com.hqyj.wj.dao.UserDao;
    import com.hqyj.wj.model.User;
    public class Test {
    
    /**
    * @param args
    */
    public static void main(String[] args) {
    //获取数据库访问类对象
    UserDao dao=new UserDao();
    dao.getCon();
    List<User> list=dao.search();
    for(int i=0;i<list.size();i++){
    System.out.println("id=="+list.get(i).getId());
    System.out.println("name=="+list.get(i).getName());
    System.out.println("birthday=="+list.get(i).getBirthday());
    }
    }
    
    }
    

      

    7.成功显示

    8.src创建服务类和接口,UserServiceInf和UserService

    package com.hqyj.wj.service.inf;
    
    import java.util.List;
    
    import com.hqyj.wj.model.User;
    
    public interface UserServiceInf {
    	List<User> search();
    }
    package com.hqyj.wj.service;
    
    import java.util.List;
    
    import com.hqyj.wj.dao.UserDao;
    import com.hqyj.wj.dao.inf.UserDaoInf;
    import com.hqyj.wj.model.User;
    import com.hqyj.wj.service.inf.UserServiceInf;
    
    /**
     *逻辑服务层实现类
     */
    public class UserService implements UserServiceInf{
    	UserDaoInf us=new UserDao();
    	public List<User> search() {
    		
    		return us.search();
    	}
     
    }
    

    9.src创建控制层 ,下新建个服务

    package com.hqyj.wj.controller;
    
    import java.io.IOException;
    import java.io.PrintWriter;
    
    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import net.sf.json.JSONArray;
    
    import com.hqyj.wj.service.*;
    import com.hqyj.wj.service.inf.*;
    import com.hqyj.wj.model.*;
    
    import java.util.List;
    import java.util.ArrayList;
    
    public class OneServlet extends HttpServlet {
    
    	public OneServlet() {
    		super();
    	}
    
    	public void destroy() {
    		super.destroy(); // Just puts "destroy" string in log
    		// Put your code here
    	}
      //doget对应的是ajax的$.get()方法
      //request是装载请求数据
    //response响应数据到前端对象
    	public void doGet(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
          		//解决中文乱码的问题
    		request.setCharacterEncoding("utf-8");
    		response.setCharacterEncoding("utf-8");
    		//在服务器端设置允许在其他域名下访问,及响应类型、响应头设置
    		System.out.println("这是");
    		response.setHeader("Access-Control-Allow-Origin", "*");
    		response.setHeader("Access-Control-Allow-Methods","POST");
    		response.setHeader("Access-Control-Allow-Headers","x-requested-with,content-type");
    		  //响应的文本格式
    		response.setContentType("text/html");
    		//获取响应的输出对象
    		PrintWriter out = response.getWriter();
    //		out.print("nissssss");
    //		out.print("您好呀");
    		
    		//创建服务器层实现类
    		UserServiceInf service=new UserService();
    		List<User> list=service.search();
    		//把list数据解析成前端页面能读取的数据
    		JSONArray json=JSONArray.fromObject(list);
    		out.print(json.toString());
    		out.flush();
    		out.close();
    	}
    	  //doget对应的是ajax的$.post()方法
    	public void doPost(HttpServletRequest request, HttpServletResponse response)
    			throws ServletException, IOException {
    
    		response.setContentType("text/html");
    		PrintWriter out = response.getWriter();
    		out.println("<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">");
    		out.println("<HTML>");
    		out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
    		out.println("  <BODY>");
    		out.print("    This is ");
    		out.print(this.getClass());
    		out.println(", using the POST method");
    		out.println("  </BODY>");
    		out.println("</HTML>");
    		out.flush();
    		out.close();
    	}
    
    	public void init() throws ServletException {
    		// Put your code here
    	}
    
    }
    10.新建一个html,获取数据库数据
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>ajax获取集合</title>
        <script src="../js/jquery-3.1.1.min.js"></script>
    </head>
    <body>
    <table>
        <thead>
       <tr><th>id</th>
       <th>姓名</th>
       <th>生日</th></tr>
        </thead>
        <tbody>
        </tbody>
    </table>
    <script>
        $(function(){
            $.get("http://localhost:8080/jquery/servlet/OneServlet",function(data){
               var num=eval(data);
                var str;
    
    //            for(var o in num){
    //                console.log(num[o].name);
    //                str+=" <tr> <td>"+num[o].id+"</td> <td>"+num[o].name+"</td> <td>"+num[o].birthday+"</td></tr>";
    //                $("tbody").html(str)
    //            }
    for(var i=0;i<num.length;i++){
        str+=" <tr> <td>"+num[i].id+"</td> <td>"+num[i].name+"</td> <td>"+num[i].birthday+"</td></tr>";
    }
                $("tbody").html(str)
            })
        })
    </script>
    </body>
    </html>

    11.就可以运行成功了,我最开始运行失败了,把tomcat7换为tomcat6就正确了

      

     

      

  • 相关阅读:
    经典的SQL语句(摘抄)
    在C#里获取U盘的盘符
    sql2005分区表示例
    解决VS2008打了SP1补丁后智能提示变英文的问题!!
    IE的打印window.print
    [摘录]SQLServer2008/2005 生成数据字典SQL语句
    表单元素与提示文字无法对齐的问题(input,checkbox文字对齐)
    C# 使用正则表达式去掉字符串中的数字
    MDI中通过GetActiveView获得VIEW
    代码管理技巧——两步创建本地SVN服务器图文教程【转】
  • 原文地址:https://www.cnblogs.com/wlhappy92/p/myeclipse_mysql.html
Copyright © 2020-2023  润新知