新手级jsp+java servlet+数据库交互

页面+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;

	}
}

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值