数据查询
模拟数据库
类DemoDB:用于模拟一个数据库
package my;
import java.util.ArrayList;
import java.util.List;
public class DemoDB
{
//全局变量
public static DemoDB i = new DemoDB();
//存储数据
List<Student>data = new ArrayList<>();
//数据
public DemoDB()
{
//准备一些数据
data.add(new Student(2017001, "诸葛亮", true, "15987648521"));
data.add(new Student(2017002, "庞统", true, "18956325870"));
data.add(new Student(2017003, "徐庶", true, "15987563015"));
data.add(new Student(2017004, "马良", true, "15987645210"));
data.add(new Student(2017005, "司马懿", true, "19854712521"));
data.add(new Student(2017006, "曹操", true, "15125832851"));
data.add(new Student(2017007, "孙权", true, "159878756291"));
data.add(new Student(2017008, "周瑜", true, "18520168511"));
data.add(new Student(2017009, "赵云", true, "18453210521"));
}
//获取全部
public List<Student>list()
{
return data;
}
//按照学号进行查询
public List<Student>list(int from, int to)
{
List<Student> result = new ArrayList<>();
for(Student s : data)
{
if(s.id >= from && s.id <= to)
{
result.add( s );
}
}
return result;
}
//按照名字查询
public List<Student> list(String name)
{
List<Student> result = new ArrayList<>();
for(Student s : data)
{
if(s.name.indexOf(name) >= 0)
{
result.add( s );
}
}
return result;
}
}
查询效果:JSON格式
Servlet:
package my;
import java.io.IOException;
import java.util.List;
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 org.json.JSONArray;
/**
* Servlet implementation class TestQuery
*/
@WebServlet("/TestQuery")
public class TestQuery extends HttpServlet
{
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
List<Student>rows =DemoDB.i.list();//所有数据
JSONArray jary = new JSONArray(rows);
response.setCharacterEncoding("UTF-8");
response.setContentType("text/plain");
response.getWriter().write(jary.toString(2));
}
}
URL参数查询
比如:查询[2017002-2017006]的学生数据
客户端需要把请求的参数发给服务器
请求的参数可以附加在URL末尾
例如:
http://127.0.0.1:8080/demo/TestQuery?from=2017002&to=2017003
package my;
import java.io.IOException;
import java.util.List;
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 org.json.JSONArray;
/**
* Servlet implementation class TestQuery
*/
@WebServlet("/TestQuery")
public class TestQuery extends HttpServlet
{
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
//从请求中获取from/to的值
String fromStr = request.getParameter("from");
String toStr = request.getParameter("to");
int from = Integer.valueOf(fromStr);
int to = Integer.valueOf(toStr);
//根据from/to进行查询
List<Student>rows =DemoDB.i.list(from, to);
JSONArray jary = new JSONArray(rows);
response.setCharacterEncoding("UTF-8");
response.setContentType("text/plain");
response.getWriter().write(jary.toString(2));
}
}