web project根据request连接数据库 返回json数据
首先建一个web project,
然后建一个db package,建链接数据库的class,添加对应的jdbc.jar到library中,
package com.dai.db; import java.sql.Connection; import java.sql.DriverManager; public class DBConnection { final String url="jdbc:mysql://localhost:3306/research_fonts"; final String username="root"; final String password="000000"; final String driver="com.mysql.jdbc.Driver"; public Connection getConnection(){ Connection conn=null; try { Class.forName(driver); conn=DriverManager.getConnection(url, username, password); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } }
然后建object package, 建对应数据库中表的 对象和查询方法。
package com.dai.search; import java.sql.Connection; import java.sql.ResultSet; import java.sql.Statement; import com.dai.db.DBConnection; public class Paper { public String getDatasById(String id){ String data=null; String sql="SELECT * FROM papers WHERE id ="+id; CreateJson c=new CreateJson(); try { DBConnection db=new DBConnection(); Connection conn=db.getConnection(); Statement st=conn.createStatement(); ResultSet rs=st.executeQuery(sql); while (rs.next()) { c.add("id", rs.getString("id")); c.add("author", rs.getString("author")); c.add("title", rs.getString("title")); c.add("so", rs.getString("so")); c.add("keywords", rs.getString("keywords")); c.add("abstract", rs.getString("abstract")); c.add("timescited", rs.getString("timescited")); c.add("publishyes", rs.getString("publishyear")); c.add("J9", rs.getString("J9")); c.cat(); } } catch (Exception e) { e.printStackTrace(); } return c.toJsonArray(); } public String getDatasByKeywords(String keyword){ String sql="SELECT * FROM papers WHERE Keywords like '%"+keyword+"%'"; String data=null; CreateJson c=new CreateJson(); try { DBConnection db=new DBConnection(); Connection conn=db.getConnection(); Statement st=conn.createStatement(); ResultSet rs=st.executeQuery(sql); while (rs.next()) { c.add("id", rs.getString("id")); c.add("author", rs.getString("author")); c.add("title", rs.getString("title")); c.add("so", rs.getString("so")); c.add("keywords", rs.getString("keywords")); c.add("abstract", rs.getString("abstract")); c.add("timescited", rs.getString("timescited")); c.add("publishyes", rs.getString("publishyear")); c.add("J9", rs.getString("J9")); c.cat(); } } catch (Exception e) { e.printStackTrace(); } return c.toJsonArray(); } }
然后建servlet package, 建对应servlet的
package com.dai.servlet; 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 com.dai.search.Paper; public class DaiServlet extends HttpServlet { public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); String option=request.getParameter("option"); System.out.println("enter..."); String data=null; Paper paper=new Paper(); if(option.equals("1")){ data=paper.getDatasById(request.getParameter("id")); System.out.println("id:"+data); }else if(option.equals("2")){ data=paper.getDatasByKeywords(request.getParameter("keyword")); System.out.println("keyword:"+data); } out.write(data); out.flush(); out.close(); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }
目录:

createJson.java用来使用json类,来方便生成json。
package com.dai.search; public class CreateJson { private String json=""; private String jsonArray=""; public CreateJson(){ this.jsonArray=""; } public void add(String key,String value){ json+=("\""+key+"\":\""+value+"\","); } public String toString(){ return "{"+json.substring(0, json.length()-1)+"}"; } public String toJsonArray(){ if(jsonArray.length()<1){ return "[]"; } return "["+jsonArray.substring(0, jsonArray.length()-1)+"]"; } public void cat(){ jsonArray+=("{"+(json.substring(0, json.length()-1))+"},"); clear(); } public void clear(){ json=""; } }
浙公网安备 33010602011771号