Servlet+HTML+Jquery+JDBC
Jquery_ajax
Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速动态网页应用的网页开发技术,无需重新加载整个网页的情况下,能够更新部分网页的技术。
通过在后台与服务器进行少量数据交换,Ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
jQuery中常用的AJAX方法
1.load()从服务器加载数据,并把返回的数据放置到指定的元素中
格式:$(selector).load(url,data,function(response,status,xhr))
url-您需要加载的 URL
data-请求参数
function(response,status,xhr)--完成时运行的回调函数
response - 包含服务器返回的结果数据
status - 包含请求的状态【"success"、"notmodified"、"error"、"timeout"、"parsererror"】
xhr - 包含 XMLHttpRequest 对象
2.$.ajax--执行异步 AJAX 请求
格式:$.ajax({name:value, name:value, ... })
url----您需要加载的 URL 例如:$.ajax({url:”login”})
type--规定请求的类型(GET 或 POST) 例如:$.ajax({url:”login”,type:”GET”})
data--规定要发送到服务器的数据.
dataType--服务器响应的数据类型
success(result,status,xhr)---当请求成功时运行的函数
async---布尔值,表示请求是否异步处理。默认是 true。
error(xhr,status,error)--如果请求失败要运行的函数
3.$.get()--使用 AJAX 的 HTTP GET 请求从服务器加载数据
格式:$.get(URL,data,function(data,status,xhr),dataType)
url----您需要加载的 URL
data--规定要发送到服务器的数据.
function(data,status,xhr)---当请求成功时运行的函数
dataType--服务器响应的数据类型 “text” “json” “xml”
4.$.post()--使用 AJAX 的 HTTP POST 请求从服务器加载数据
格式:$(selector).post(URL,data,function(data,status,xhr),dataType)
url----您需要加载的 URL
data--规定要发送到服务器的数据.
function(data,status,xhr)---当请求成功时运行的函数
dataType--服务器响应的数据类型 “text” “json” “xml”
例如:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>测试jquery的ajax</title>
<!-- 导入jquery函数库-->
<script src="js/jquery-3.5.1.js"></script>
<script>
$(function(){
$("#but1").click(function(){
$.get("http://127.0.0.1:8080/ajax/test",
function(data){
$("#h1").text(data);
},"text");
});
$("#but2").click(function(){
$.post("http://127.0.0.1:8080/ajax/test",
function(data){
$("#h1").text(data);
},"text");
});
//get发送有参数的请求
/*
$("#but3").click(function(){
var username=$("#text1").val();
var password=$("#text2").val();
$.get("http://127.0.0.1:8080/ajax/hello?username="+username+"&password="+password,
function(data){
$("#h1").text(data);
},"text");
});
*/
$("#but3").click(function(){
var username=$("#text1").val();
var password=$("#text2").val();
var data="username="+username+"&password="+password;
$.get("http://127.0.0.1:8080/ajax/hello",
data,
function(data){
$("#h1").text(data);
},"text");
});
//post发送有参数的请求
/*
$("#but4").click(function(){
var username=$("#text1").val();
var password=$("#text2").val();
$.post("http://127.0.0.1:8080/ajax/hello?username="+username+"&password="+password,
function(data){
$("#h1").text(data);
},"text");
});
*/
/*
$("#but4").click(function(){
var username=$("#text1").val();
var password=$("#text2").val();
var data="username="+username+"&password="+password;
$.post("http://127.0.0.1:8080/ajax/hello",
data,
function(data){
$("#h1").text(data);
},"text");
});
*/
$("#but4").click(function(){
var username=$("#text1").val();
var password=$("#text2").val();
var data={"username":username,"password":password};
$.post("http://127.0.0.1:8080/ajax/hello",
data,
function(data){
$("#h1").text(data);
},"text");
});
//get方式返回json字符串
$("#but5").click(function(){
$.get("http://127.0.0.1:8080/ajax/mytest",
function(data){
//dataType===“text”---json字符串==>json对象
//var jsonObj=JSON.parse(data);
//var stuinfo=jsonObj.stuid+","+jsonObj.stuname;
//$("#h1").text(stuinfo);
//dataType==="json"--json对象
$("#h1").text(data);
},"json");
});
//post方式,返回json
$("#but6").click(function(){
$.post("http://127.0.0.1:8080/ajax/mytest",
function(data){
//dataType==="json"--json对象
$("#h1").text(data);
},"json");
});
});
</script>
</head>
<body>
<input id="but1" type="button" value="测试get方法发送无参数的ajax请求">
<input id="but2" type="button" value="测试post方法发送无参数的ajax请求"><br>
<input id="but3" type="button" value="测试get方法发送有参数的ajax请求">
<input id="but4" type="button" value="测试post方法发送有参数的ajax请求"><br>
<input id="but5" type="button" value="测试get方法发送ajax请求,返回json">
<input id="but6" type="button" value="测试post方法发送ajax请求,返回json"><br>
<input id="text1" type="text" /><br>
<input id="text2" type="text" /><br>
<h1 id="h1"></h1>
</body>
</html>
Servlet+HTML+Jquery+JDBC
1. 创建数据库表
create table t_student(
stu_id int primary key auto_increment,
stu_name varchar(20),
stu_pass varchar(20),
stu_age int,
stu_address varchar(30)
);
2. 创建javaweb项目ServletJSPJDBC,[修改Content Root为sjj],修改工程访问名称
3. 导入第三方依赖【druid-1.1.10.jar mysql-connector-java-5.1.38-bin.jar】
4. 在src下创建数据库连接配置文件【xxxxxxxx.properties】
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8
username=root
password=123456
initialSize=100
maxActive=300
maxWait=60000
5. 创建javabean
package com.wangxing.student.bean;
/**
* 保存学生信息的javabean
* @author Administrator
*
*/
public class StudentBean {
private int stuid;
private String stuname;
private String stupass;
private int stuage;
private String stuaddress;
public int getStuid() {
return stuid;
}
public void setStuid(int stuid) {
this.stuid = stuid;
}
public String getStuname() {
return stuname;
}
public void setStuname(String stuname) {
this.stuname = stuname;
}
public String getStupass() {
return stupass;
}
public void setStupass(String stupass) {
this.stupass = stupass;
}
public int getStuage() {
return stuage;
}
public void setStuage(int stuage) {
this.stuage = stuage;
}
public String getStuaddress() {
return stuaddress;
}
public void setStuaddress(String stuaddress) {
this.stuaddress = stuaddress;
}
}
package com.wangxing.sjj.bean;
public class Result {
private boolean success;
private String msg;
public Result(boolean success,String msg){
this.success=success;
this.msg=msg;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
6. 创建数据访问接口以及实现类
package com.wangxing.student.dao.impl;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import javax.sql.DataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;
import com.wangxing.student.bean.StudentBean;
import com.wangxing.student.dao.StudentDao;
public class StudentDaoImpl implements StudentDao{
private static StudentDaoImpl studentDao=null;
// 定义保存druid数据源对象
private DataSource dataSource = null;
private StudentDaoImpl() {
if(dataSource==null){
try {
Properties pro=new Properties();
InputStream inStream=this.getClass().getResourceAsStream("/mysqldata.properties");
pro.load(inStream);
dataSource=DruidDataSourceFactory.createDataSource(pro);
}catch(Exception e) {
e.printStackTrace();
}
}
}
public static StudentDaoImpl getStudentDaoImpl(){
if(studentDao==null){
studentDao=new StudentDaoImpl();
}
return studentDao;
}
@Override
public void insertStudent(StudentBean student)throws Exception{
Connection conn = dataSource.getConnection();
String insert = "insert into t_student values(null,?,?,?,?);";
PreparedStatement statement = conn.prepareStatement(insert);
statement.setString(1, student.getStuname());
statement.setString(2, student.getStupass());
statement.setInt(3, student.getStuage());
statement.setString(4, student.getStuaddress());
int temp = statement.executeUpdate();
statement.close();
conn.close();
}
@Override
public void updateStudent(StudentBean student)throws Exception{
Connection conn = dataSource.getConnection();
String update = "update t_student set stu_name=?,stu_pass=?,stu_age=?,stu_address=? where stu_id=?;";
PreparedStatement statement = conn.prepareStatement(update);
statement.setString(1, student.getStuname());
statement.setString(2, student.getStupass());
statement.setInt(3, student.getStuage());
statement.setString(4, student.getStuaddress());
statement.setInt(5, student.getStuid());
int temp = statement.executeUpdate();
statement.close();
conn.close();
}
@Override
public void deleteStudent(int stuid)throws Exception {
Connection conn = dataSource.getConnection();
String delete = "delete from t_student where stu_id=?;";
PreparedStatement statement = conn.prepareStatement(delete);
statement.setInt(1, stuid);
int temp = statement.executeUpdate();
statement.close();
conn.close();
}
@Override
public StudentBean selectStudentById(int stuid)throws Exception {
StudentBean student=null;
Connection conn = dataSource.getConnection();
String select = "select * from t_student where stu_id=?;";
PreparedStatement statement = conn.prepareStatement(select);
statement.setInt(1, stuid);
ResultSet resultSet = statement.executeQuery();
if (resultSet.next()) {
int id = resultSet.getInt("stu_id");
String name = resultSet.getString("stu_name");
String pass = resultSet.getString("stu_pass");
int age = resultSet.getInt("stu_age");
String address = resultSet.getString("stu_address");
student= new StudentBean();
student.setStuid(id);
student.setStuname(name);
student.setStupass(pass);
student.setStuage(age);
student.setStuaddress(address);
}
resultSet.close();
statement.close();
conn.close();
return student;
}
@Override
public List<StudentBean> selectStudent()throws Exception {
List<StudentBean> studenlist=new ArrayList<StudentBean>();
Connection conn = dataSource.getConnection();
String select = "select * from t_student;";
PreparedStatement statement = conn.prepareStatement(select);
ResultSet resultSet = statement.executeQuery();
while(resultSet.next()) {
int id = resultSet.getInt("stu_id");
String name = resultSet.getString("stu_name");
String pass = resultSet.getString("stu_pass");
int age = resultSet.getInt("stu_age");
String address = resultSet.getString("stu_address");
StudentBean student= new StudentBean();
student.setStuid(id);
student.setStuname(name);
student.setStupass(pass);
student.setStuage(age);
student.setStuaddress(address);
studenlist.add(student);
}
resultSet.close();
statement.close();
conn.close();
return studenlist;
}
@Override
public boolean selectStudentByNameAndPass(StudentBean stu) throws Exception{
boolean flag=true;
Connection conn = dataSource.getConnection();
String select = "select * from t_student where stu_name=? and stu_pass=?;";
PreparedStatement statement = conn.prepareStatement(select);
statement.setString(1, stu.getStuname());
statement.setString(2, stu.getStupass());
ResultSet resultSet = statement.executeQuery();
flag=resultSet.next();
resultSet.close();
statement.close();
conn.close();
return flag;
}
}
7. 创建业务访问接口以及实现类
package com.wangxing.student.service.impl;
import java.util.List;
import com.wangxing.student.bean.StudentBean;
import com.wangxing.student.dao.StudentDao;
import com.wangxing.student.service.StudentService;
public class StudentServiceImpl implements StudentService{
private StudentDao stuentDao=null;
public StudentServiceImpl(StudentDao stuentDao){
this.stuentDao=stuentDao;
}
@Override
public void insertStudent(StudentBean student) throws Exception {
stuentDao.insertStudent(student);
}
@Override
public void updateStudent(StudentBean student) throws Exception {
stuentDao.updateStudent(student);
}
@Override
public void deleteStudent(int stuid) throws Exception {
stuentDao.deleteStudent(stuid);
}
@Override
public StudentBean selectStudentById(int stuid) throws Exception {
return stuentDao.selectStudentById(stuid);
}
@Override
public List<StudentBean> selectStudent() throws Exception {
return stuentDao.selectStudent();
}
@Override
public boolean selectStudentByNameAndPass(StudentBean stu)throws Exception {
return stuentDao.selectStudentByNameAndPass(stu);
}
}
8. 创建具体业务处理的Servlet
package com.wangxing.student.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.wangxing.student.bean.StudentBean;
import com.wangxing.student.dao.impl.StudentDaoImpl;
import com.wangxing.student.service.StudentService;
import com.wangxing.student.service.impl.StudentServiceImpl;
/**
* 处理添加操作的servlet
* @author Administrator
*
*/
public class StudentInsertServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out=resp.getWriter();
String stuname=req.getParameter("username");
String stupass=req.getParameter("password");
String stuage=req.getParameter("stuage");
String stuaddress=req.getParameter("stuaddress");
StudentBean student=new StudentBean();
student.setStuname(stuname);
student.setStupass(stupass);
student.setStuage(Integer.parseInt(stuage));
student.setStuaddress(stuaddress);
StudentService studentService=new StudentServiceImpl(StudentDaoImpl.getStudentDaoImpl());
try {
studentService.insertStudent(student);
out.write(new Gson().toJson(new Result(true,"添加成功")));
} catch (Exception e) {
e.printStackTrace();
out.write(new Gson().toJson(new Result(false,"添加失败")));
}
out.close();
}
}
package com.wangxing.student.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.wangxing.student.bean.StudentBean;
import com.wangxing.student.dao.impl.StudentDaoImpl;
import com.wangxing.student.service.StudentService;
import com.wangxing.student.service.impl.StudentServiceImpl;
/**
* 处理修改操作的servlet
* @author Administrator
*
*/
public class StudentUpdateServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out=resp.getWriter();
String stuid=req.getParameter("stuid");
String stuname=req.getParameter("username");
String stupass=req.getParameter("password");
String stuage=req.getParameter("stuage");
String stuaddress=req.getParameter("stuaddress");
StudentBean student=new StudentBean();
student.setStuid(Integer.parseInt(stuid));
student.setStuname(stuname);
student.setStupass(stupass);
student.setStuage(Integer.parseInt(stuage));
student.setStuaddress(stuaddress);
StudentService studentService=new StudentServiceImpl(StudentDaoImpl.getStudentDaoImpl());
try {
studentService.updateStudent(student);
out.write(new Gson().toJson(new Result(true,"修改成功")));
} catch (Exception e) {
e.printStackTrace();
out.write(new Gson().toJson(new Result(false,"修改失败")));
}
out.close();
}
}
package com.wangxing.student.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.wangxing.student.bean.StudentBean;
import com.wangxing.student.dao.impl.StudentDaoImpl;
import com.wangxing.student.service.StudentService;
import com.wangxing.student.service.impl.StudentServiceImpl;
/**
* 处理删除操作的servlet
* @author Administrator
*
*/
public class StudentDeleteServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out=resp.getWriter();
String stuid=req.getParameter("stuid");
StudentService studentService=new StudentServiceImpl(StudentDaoImpl.getStudentDaoImpl());
try {
studentService.deleteStudent(Integer.parseInt(stuid));
out.write(new Gson().toJson(new Result(true,"删除成功")));
} catch (Exception e) {
e.printStackTrace();
out.write(new Gson().toJson(new Result(false,"删除失败")));
}
out.close();
}
}
package com.wangxing.student.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.wangxing.student.bean.StudentBean;
import com.wangxing.student.dao.impl.StudentDaoImpl;
import com.wangxing.student.service.StudentService;
import com.wangxing.student.service.impl.StudentServiceImpl;
/**
* 处理根据id查询操作的servlet
* @author Administrator
*
*/
public class StudentSelectStudentServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out=resp.getWriter();
String stuid=req.getParameter("stuid");
StudentService studentService=new StudentServiceImpl(StudentDaoImpl.getStudentDaoImpl());
try {
StudentBean student=studentService.selectStudentById(Integer.parseInt(stuid));
out.write(new Gson().toJson(student));
} catch (Exception e) {
e.printStackTrace();
out.write(new Gson().toJson(null));
}
out.close();
}
}
package com.wangxing.student.servlet;
import java.io.IOException;
import java.util.List;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.wangxing.student.bean.StudentBean;
import com.wangxing.student.dao.impl.StudentDaoImpl;
import com.wangxing.student.service.StudentService;
import com.wangxing.student.service.impl.StudentServiceImpl;
/**
* 处理查询所有操作的servlet
* @author Administrator
*
*/
public class StudentSelectListServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out=resp.getWriter();
StudentService studentService=new StudentServiceImpl(StudentDaoImpl.getStudentDaoImpl());
try {
List<StudentBean> studentlist=studentService.selectStudent();
out.write(new Gson().toJson(studentlist));
} catch (Exception e) {
e.printStackTrace();
}
out.close();
}
}
package com.wangxing.sjj.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.wangxing.sjj.bean.StudentBean;
import com.wangxing.sjj.dao.impl.StudentDaoImpl;
import com.wangxing.sjj.service.StudentService;
import com.wangxing.sjj.service.impl.StudentServiceImpl;
public class StudentLoginServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter out=resp.getWriter();
String name=req.getParameter("username");
String pass=req.getParameter("password");
StudentBean stu=new StudentBean();
stu.setStuname(name);
stu.setStupass(pass);
StudentService studentService=new StudentServiceImpl(StudentDaoImpl.getStudentDaoImpl());
try{
boolean flag=studentService.selectStudentByNameAndPass(stu);
if(flag){
out.write(new Gson().toJson(new Result(true,"登陆成功!")));
}else{
out.write(new Gson().toJson(new Result(false,"用户名密码有误!")));
}
}catch(Exception e){
e.printStackTrace();
out.write(new Gson().toJson(new Result(false,"用户名密码有误!")));
}
out.close();
}
}
package com.wangxing.sjj.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class StudentLogoutServlet extends HttpServlet{
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doPost(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.getSession().invalidate();
PrintWriter out=resp.getWriter();
out.write(new Gson().toJson(new Result(true,"退出成功")));
out.close();
}
}
9. 添加字符过滤器
10. CORS过滤器
package com.wangxing.sjj.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class CORSFilter implements Filter{
@Override
public void destroy() {
}
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) resp;
//跨域请求,*代表允许全部类型
response.setHeader("Access-Control-Allow-Origin", "*");
//允许请求方式
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
//用来指定本次预检请求的有效期,单位为秒,在此期间不用发出另一条预检请求
response.setHeader("Access-Control-Max-Age", "3600");
//请求包含的字段内容,如有多个可用哪个逗号分隔如下
response.setHeader("Access-Control-Allow-Headers", "content-type,x-requested-with,Authorization, x-ui-request,lang");
//访问控制允许凭据,true为允许
response.setHeader("Access-Control-Allow-Credentials", "true");
// 传递业务请求处理
chain.doFilter(req, resp);
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
11. 配置web.xml
12. 创建html