简单mvc模式添加查询学生信息test

来源:互联网 发布:大数据股票软件 编辑:程序博客网 时间:2024/06/01 17:36

小测试小测试~希望对有需要的有所帮助,大神勿喷,我是一枚小菜鸟!!

下面进入正题:

1.首先是准备连接数据以及jstl的jar包(本人自己包装了驱动管理jar包方便使用,没有的可以写代码连接)

2.之后进入代码环节~下图为包的分类:


在数据创建一个测试表
| student | CREATE TABLE `student` (
  `id` int(10) NOT NULL AUTO_INCREMENT,
  `name` varchar(10) DEFAULT NULL,
  `age` int(10) DEFAULT NULL,
  `department` varchar(30) DEFAULT NULL,
  `address` varchar(30) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8 |



学生类

package com.hy.entity;


public class Student {

privateintid = 0;

private Stringname =null;

privateintage = 0;

private Stringdepartment =null;

private Stringaddress =null;

public int getId() {

returnid;

}

public void setId(int id) {

this.id =id;

}

public String getName() {

returnname;

}

public void setName(String name) {

this.name =name;

}

public int getAge() {

returnage;

}

public void setAge(int age) {

this.age =age;

}

public String getDepartment() {

returndepartment;

}

public void setDepartment(String department) {

this.department =department;

}

public String getAddress() {

returnaddress;

}

public void setAddress(String address) {

this.address =address;

}

public Student(intid, Stringname,intage, Stringdepartment, Stringaddress) {

super();

this.id =id;

this.name =name;

this.age =age;

this.department =department;

this.address =address;

}

public Student(Stringname,intage, Stringdepartment, Stringaddress) {

super();

this.name =name;

this.age =age;

this.department =department;

this.address =address;

}

public Student() {

super();

}

}



添加学生页面

<!DOCTYPE html>

<html>

<head>

<metacharset="UTF-8">

<title>ADD</title>

</head>

<body>

<h2>Add Student</h2>

<formaction="add.do"method="get">

<table>

<tr><th>name</th><td><inputtype="text"name="name"/></td></tr>

<tr><th>age</th><td><inputtype="text"name="age"/></td></tr>

<tr><th>department</th><td><inputtype="text"name="department"/></td></tr>

<tr><th>address</th><td><inputtype="text"name="address"/></td></tr>

<tr><th><inputtype="submit"value="添加"/></th></tr>

</table>

</form>

</body>

</html>


获取页面信息servlet

package com.hy.servlet;


import java.io.IOException;


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 javax.servlet.http.HttpSession;


import com.hy.dao.Add;

import com.hy.entity.Student;


@WebServlet("/add.do")

public class AddServletextends HttpServlet {


/**

*/

privatestaticfinallongserialVersionUID = 1L;


@Override

protectedvoid doGet(HttpServletRequestreq, HttpServletResponseresp)throws ServletException, IOException {

// 获取会话对象来统计学生数量(每添加一次访问一次本页)

HttpSession session =req.getSession();

Integer Count =new Integer(0);

String K =new String("visitCount");

// 检查网页上是否有新的访问者

if (session.isNew()) {

Count = 1;

session.setAttribute(K,Count);

} else {

// 重置学生计数器

// session.invalidate();

Count = (Integer)session.getAttribute(K);

Count = Count + 1;

session.setAttribute(K,Count);

}

// 设置字符集编码(最好在配置文件中定义,我这里是test直接设置了);

req.setCharacterEncoding("utf-8");

// 获取页面参数

String name =req.getParameter("name");

int age = Integer.parseInt(req.getParameter("age"));

String department =req.getParameter("department");

String address =req.getParameter("address");

// 将参数封装到实体类学生对象中

Student stu =new Student(name,age,department,address);

// 将对象存储到添加列表中等待处理

Add.add(stu);

// 转发到listServlet

req.getRequestDispatcher("list.do").forward(req,resp);


}

}




添加操作

package com.hy.dao;


import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;


import com.hy.entity.Student;


import jdbc.util.JdbcDriver;


public class Add {

// 临时存储学生列表

private static List<Student> list = new ArrayList<>();


public static void add(Student student) {

// 添加学生到列表

list.add(student);

// 每10个学生存一次数据库(自定义,this is a test!!)

if (list.size() % 10 == 0) {

// 连接数据库(自己包装的jar包)

JdbcDriver.setProperties("java123","root","1234");

Connection conn = JdbcDriver.getConnection();

PreparedStatement stmt = null;

try {

// 进行事务操作设置自动不提交

conn.setAutoCommit(false);

String sql ="insert into student values(null,?,?,?,?)";

// 预编译sql结构

stmt = conn.prepareStatement(sql);

// 迭代学生list,给sql放参数

for (Studentstu :list) {

stmt.setString(1,stu.getName());

stmt.setInt(2,stu.getAge());

stmt.setString(3,stu.getDepartment());

stmt.setString(4,stu.getAddress());

// 添加到批处理

stmt.addBatch();

// 每5个执行一次批处理(自定义,this is a test!!),清空释放内存

if (list.size() % 5 == 0) {

stmt.executeBatch();

stmt.clearBatch();

stmt.clearParameters();

}

}

// 清空临时存储的学生列表

list.clear();

// 无异常提交事务

conn.commit();

} catch (Exceptione) {

try {

// 处理事务时发生异常,撤销事务

conn.rollback();

} catch (SQLExceptione1) {

// TODO Auto-generated catch block

e1.printStackTrace();

}

// TODO: handle exception

} finally {

// 关闭相关连接,释放资源

JdbcDriver.close(null,stmt,conn);

}

}


}

}




list学生信息列表servlet

package com.hy.servlet;


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 com.hy.dao.Select;

import com.hy.entity.Student;

@WebServlet("/list.do")

public class ListServletextends HttpServlet{


/**

*/

privatestaticfinallongserialVersionUID = 1L;

@Override

protectedvoid doGet(HttpServletRequestreq, HttpServletResponseresp)throws ServletException, IOException {

//获取所有学生信息列表

List<Student> list = Select.select();

//将列表存储在请求中

req.setAttribute("list",list);

//转发到展示(View)页面

req.getRequestDispatcher("view.jsp").forward(req,resp);

}

}





查询操作

package com.hy.dao;


import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.util.ArrayList;

import java.util.List;


import com.hy.entity.Student;


import jdbc.util.JdbcDriver;


public class Select {

public static List<Student> select() {

//连接数据库(自己封装的jar包)

JdbcDriver.setProperties("java123","root","1234");

Connection conn = JdbcDriver.getConnection();

List<Student> list =new ArrayList<>();

PreparedStatement stmt = null;

ResultSet set =null;

try {

String sql ="select * from student";

//预编译sql

stmt = conn.prepareStatement(sql);

//执行查询操作

set = stmt.executeQuery();

//迭代获取数据库数据存储到学生对象中

while(set.next()) {

Student student =new Student();

student.setId(set.getInt("id"));

student.setName(set.getString("name"));

student.setAge(set.getInt("age"));

student.setDepartment(set.getString("department"));

student.setAddress(set.getString("address"));

//将学生对象添加到列表

list.add(student);

}

} catch (Exceptione) {

e.printStackTrace();

// TODO: handle exception

}finally {

//关闭相关连接,释放资源

JdbcDriver.close(set,stmt,conn);

}

//返回学生信息列表

returnlist;

}

}




展示页面

<%@ pagelanguage="java"contentType="text/html; charset=UTF-8"

    pageEncoding="UTF-8"%>

<%@ taglibprefix="c"uri="http://java.sun.com/jsp/jstl/core"%>

<!DOCTYPE htmlPUBLIC"-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">

<title>VIEW</title>

</head>

<body>

<h2>VIEW</h2>

<h3>学生总数:${sessionScope.Count }(10个存一次)</h3>

<table>

<tr><th>id</th><th>name</th><th>age</th><th>department</th><th>address</th></tr>

<c:forEach items="${list }"var="stu">

<tr><td>${stu.id }</td><td>${stu.name }</td><td>${stu.age }</td><td>${stu.department }</td><td>${stu.address }</td></tr>

</c:forEach>

</table>

</body>

</html>



3.ok这样就完成了嘿嘿,希望对有需要的有所帮助!!

原创粉丝点击