页面+java servlet+数据库之间的数据交互是一个java项目的基础。下面将用最简单的原理介绍一下交互过程。
这里默认你知道什么是Jsp、mysql、servlet、Tomcat服务器。
首先是一个html 输入界面示例:
<body>
用户名:<input id="user" name="user" type="text"/><br/>
密码:<input id="password" name="password" type="password"/><br/>
<button onclick="send()">登录</button>
<div id="msg"></div>
<div id="show"></div>
</body>
第一步:要想把输入数据传入后台,需要用 javascript 和 ajax(ajax不理解也没问题,基本都是固定语句)。通过ajax 对后台发出请求并接收后台响应。示例如下:(除红框内的内容其他为固定格式,使用时只需改变量即可)
第二步:在后台servlet 文件中,代码:
package com.qcby.servlet;
import java.io.IOException;
import java.util.List;
import java.util.Map;
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 com.qcby.db.Db;
/**
* Servlet implementation class UserServlet
*/
@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public UserServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
// request.setCharacterEncoding("utf-8");
// response.setCharacterEncoding("utf-8");
// response.setContentType("text/html;charset=utf-8");
// response.getWriter().append("<div style='color:red'>听课贼帅</div>");
response.sendRedirect("index.html");
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String user=request.getParameter("username");
String pwd=request.getParameter("password");
String sql="select * from user";
List<Map<String,String>> data=Db.select(sql);
if((user!=null&&user.length()!=0)&&(pwd!=null&&pwd.length()!=0)) {
if(user.equals("123")&&pwd.equals("123")) {
String json="{\"code\":\"200\",\"msg\":\""+user+" 登陆成功 \",\"data\":[";
for(Map<String,String> map : data) {
json+="{\"name\":\""+map.get("userName")+"\",\"desc\":\""+map.get("pwd")+"\"},";
}
json=json.substring(0,json.length()-1);
json+="]}";
System.out.println(json);
// + "\"data\":[{\"name\":\"河北大学 \",\"desc\":\"是一所大学a\"},"
// + "{\"name\":\"河北小学 \",\"desc\":\"是一所小学a\"},"
// + "{\"name\":\"河北幼儿园 \",\"desc\":\"是一所幼儿园a\"}]}";
response.getWriter().append(json);
}
else {
response.getWriter().append("{\"code\":\"500\",\"msg\":\""+user+"登陆失败 \"}");
}
}else {
response.getWriter().append("内容不能为空");
}
}
}
doGet(),doPost()分别为不同请求方式get,post 对应的处理函数,本示例为 post请求,所以在 doPost() 方法中编写代码进行处理。
具体如下:
连接数据库的类 Db.java 如下:
package com.qcby.db;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Db {
public static List<Map<String,String>> select(String sql) {
List<Map<String,String>> list =new ArrayList<>();
try {
//加载mysql驱动
Class.forName("com.mysql.jdbc.Driver");
//连接
String url = "jdbc:mysql://localhost:3306/java?useUnicode=true&characterEncoding=UTF-8";
//数据库账户
String user = "root";
//数据库密码
String password = "root";
//创建连接
Connection conn = DriverManager.getConnection(url, user, password);
//创建一个"小手"
Statement statement = conn.createStatement();
// 一个sql
// String sql="select * from user";
//通过我们这个小手执行我们的sql 拿回数据
ResultSet resultSet = statement.executeQuery(sql);
//遍历结果集
while(resultSet.next()) {
Map<String,String> result=new HashMap<>();
result.put("id", resultSet.getString("id"));
result.put("userName", resultSet.getString("userName"));
result.put("sex", resultSet.getString("sex"));
result.put("status", resultSet.getString("status"));
} catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return list;
}
}