Servlet基础及实现增删改查案例(1)

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

主页面

查询学生信息

5.4 创建StudentList.jsp


<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8” import = “java.util.,com.kaka.entity.”%>

显示学生信息清单

显示学生信息清单

添加学生信息

IDNAMESEXAGE

<%

if(request.getAttribute(“stus”)!=null){

List li = (List)request.getAttribute(“stus”);

for(int i = 0; i < li.size(); i++){

Student student = li.get(i);

%>

<%=student.getId() %> <%=student.getName() %> <%=student.getSex() %> <%=student.getAge() %>

修改 

删除

<%

}

}

%>

5.5 创建addStudent.jsp


  • 在添加表单中需要含有action的隐藏域
  • < input type=“hidden” name=“action” value=“add” / >

<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8”%>

添加学生信息

添加学生信息

ID:

NAME:

SEX:

AGE:


5.6 创建updateStudent.jsp


<%@ page language=“java” contentType=“text/html; charset=UTF-8”

pageEncoding=“UTF-8” import = “com.kaka.entity.*”%>

修改信息界面

修改界面

<%

Student s = (Student)request.getAttribute(“student”);

if(s!=null){

%>

ID:

NAME:

SEX:

AGE:


<%}else{

out.print(“修改的对象不存在!!!”);

}

%>

5.7 创建JDBCUtil.java


package com.kaka.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

public class JDBCUtil {

//定义常量

final static String driver = “com.mysql.jdbc.Driver”;

final static String url = “jdbc:mysql://localhost:3306/db0711?useUnicode=true&characterEncoding=utf8”;

final static String username = “root”;

final static String password = “root”;

//声明常用的对象

protected Connection conn = null;

protected PreparedStatement pstmt = null;

protected ResultSet rs = null;

//静态代码块

static{

try {

Class.forName(driver);

} catch (ClassNotFoundException e) {

e.printStackTrace();

}

}

//获取连接

public void getConnection(){

try {

conn = DriverManager.getConnection(url, username, password);

} catch (SQLException e) {

e.printStackTrace();

}

}

//关闭资源

public void closeAll(){

if(rs != null){

try {

rs.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(pstmt != null){

try {

pstmt.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

if(conn != null){

try {

conn.close();

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

5.8 创建Student.java实现类


package com.kaka.entity;

public class Student {

private int id;

private String name;

private String sex;

private String age;

public Student() {

super();

// TODO Auto-generated constructor stub

}

public Student(int id, String name, String sex, String age) {

super();

this.id = id;

this.name = name;

this.sex = sex;

this.age = age;

}

@Override

public String toString() {

return “Student [id=” + id + “, name=” + name + “, sex=” + sex + “, age=” + age + “]”;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public String getAge() {

return age;

}

public void setAge(String age) {

this.age = age;

}

}

5.9 创建StuDao.java接口


package com.kaka.dao;

import java.util.List;

import com.kaka.entity.Student;

public interface StuDao {

public List findAll();

public boolean addStudent(Student student);

public Student findOne(int id);

public boolean updateStudent(Student student);

public boolean deleteDeptById(int id);

}

5.10 创建StuDaoImpl.java接口实现类


package com.kaka.dao;

import java.sql.SQLException;

import java.util.ArrayList;

import java.util.List;

import com.kaka.entity.Student;

import com.kaka.util.JDBCUtil;

public class StuDaoImpl extends JDBCUtil implements StuDao{

@Override

public List findAll() {

List li = new ArrayList();

try {

String sql = “SELECT * FROM STUDENT”;

super.getConnection();

super.pstmt = super.conn.prepareStatement(sql);

rs = pstmt.executeQuery();

while(rs.next()){

Student stu = new Student();

stu.setId(rs.getInt(“id”));

stu.setName(rs.getString(“name”));

stu.setSex(rs.getString(“sex”));

stu.setAge(rs.getString(“age”));

li.add(stu);

}

return li;

} catch (SQLException e) {

e.printStackTrace();

}finally{

super.closeAll();

}

return null;

}

@Override

public boolean addStudent(Student student) {

try {

String sql = “INSERT INTO STUDENT(id,name,sex,age) VALUES(?,?,?,?)”;

super.getConnection();

super.pstmt = super.conn.prepareStatement(sql);

pstmt.setInt(1, student.getId());

pstmt.setString(2, student.getName());

pstmt.setString(3, student.getSex());

pstmt.setString(4, student.getAge());

int i = pstmt.executeUpdate();

if(i > -1){

return true;

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

super.closeAll();

}

return false;

}

@Override

public Student findOne(int id) {

try {

String sql = “SELECT * FROM STUDENT WHERE ID=?”;

super.getConnection();

pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, id);

rs = pstmt.executeQuery();

Student student = new Student();

if(rs.next()){

student.setId(rs.getInt(“id”));

student.setName(rs.getString(“name”));

student.setSex(rs.getString(“sex”));

student.setAge(rs.getString(“age”));

}

return student;

} catch (SQLException e) {

e.printStackTrace();

}finally{

super.closeAll();

}

return null;

}

@Override

public boolean updateStudent(Student student) {

try {

String sql = “UPDATE STUDENT SET name=?,sex=?,age=? WHERE id=?”;

super.getConnection();

super.pstmt = super.conn.prepareStatement(sql);

pstmt.setString(1, student.getName());

pstmt.setString(2, student.getSex());

pstmt.setString(3, student.getAge());

pstmt.setInt(4, student.getId());

int i = pstmt.executeUpdate();

if(i > -1){

return true;

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

super.closeAll();

}

return false;

}

@Override

public boolean deleteDeptById(int id) {

try {

String sql = “DELETE FROM STUDENT WHERE ID=?”;

super.getConnection();

super.pstmt = super.conn.prepareStatement(sql);

pstmt.setInt(1, id);

int i = pstmt.executeUpdate();

if(i > -1){

return true;

}

} catch (SQLException e) {

e.printStackTrace();

}finally{

super.closeAll();

}

return false;

}

}

5.11 创建StuServlet.java


package com.kaka.controller;

import java.io.IOException;

import java.util.List;

import javax.servlet.ServletConfig;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import com.kaka.dao.StuDao;

import com.kaka.dao.StuDaoImpl;

import com.kaka.entity.Student;

public class StuServlet extends HttpServlet{

private final static String oldEncoding = “ISO-8859-1”;

private static String newEncoding = null;

public StuServlet() {

super();

}

@Override

public void destroy() {

super.destroy();

}

@Override

public void init(ServletConfig config) throws ServletException {

newEncoding = config.getInitParameter(“encoding”);

}

@Override

protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//获取操作类型

String action = request.getParameter(“action”);

//根据操作类型执行特定操作

if(“list”.equals(action)){

//获取StuDao对象

StuDao studao = new StuDaoImpl();

//调用dao中的findAll方法

最后

ActiveMQ消息中间件面试专题

  • 什么是ActiveMQ?
  • ActiveMQ服务器宕机怎么办?
  • 丢消息怎么办?
  • 持久化消息非常慢怎么办?
  • 消息的不均匀消费怎么办?
  • 死信队列怎么办?
  • ActiveMQ中的消息重发时间间隔和重发次数吗?

ActiveMQ消息中间件面试专题解析拓展:

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM


redis面试专题及答案

  • 支持一致性哈希的客户端有哪些?
  • Redis与其他key-value存储有什么不同?
  • Redis的内存占用情况怎么样?
  • 都有哪些办法可以降低Redis的内存使用情况呢?
  • 查看Redis使用情况及状态信息用什么命令?
  • Redis的内存用完了会发生什么?
  • Redis是单线程的,如何提高多核CPU的利用率?

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM


Spring面试专题及答案

  • 谈谈你对 Spring 的理解
  • Spring 有哪些优点?
  • Spring 中的设计模式
  • 怎样开启注解装配以及常用注解
  • 简单介绍下 Spring bean 的生命周期

Spring面试答案解析拓展

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM


高并发多线程面试专题

  • 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?
  • Java 中新的 Lock 接口相对于同步代码块(synchronized block)有什么优势?如果让你实现一个高性能缓存,支持并发读取和单一写入,你如何保证数据完整性。
  • Java 中 wait 和 sleep 方法有什么区别?
  • 如何在 Java 中实现一个阻塞队列?
  • 如何在 Java 中编写代码解决生产者消费者问题?
  • 写一段死锁代码。你在 Java 中如何解决死锁?

高并发多线程面试解析与拓展

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM


jvm面试专题与解析

  • JVM 由哪些部分组成?
  • JVM 内存划分?
  • Java 的内存模型?
  • 引用的分类?
  • GC什么时候开始?

JVM面试专题解析与拓展!

BAT面试文档:ActiveMQ+redis+Spring+高并发多线程+JVM

哈希的客户端有哪些?

  • Redis与其他key-value存储有什么不同?
  • Redis的内存占用情况怎么样?
  • 都有哪些办法可以降低Redis的内存使用情况呢?
  • 查看Redis使用情况及状态信息用什么命令?
  • Redis的内存用完了会发生什么?
  • Redis是单线程的,如何提高多核CPU的利用率?

[外链图片转存中…(img-PYRVI8WN-1714445493504)]


Spring面试专题及答案

  • 谈谈你对 Spring 的理解
  • Spring 有哪些优点?
  • Spring 中的设计模式
  • 怎样开启注解装配以及常用注解
  • 简单介绍下 Spring bean 的生命周期

Spring面试答案解析拓展

[外链图片转存中…(img-Gh1819yf-1714445493504)]


高并发多线程面试专题

  • 现在有线程 T1、T2 和 T3。你如何确保 T2 线程在 T1 之后执行,并且 T3 线程在 T2 之后执行?
  • Java 中新的 Lock 接口相对于同步代码块(synchronized block)有什么优势?如果让你实现一个高性能缓存,支持并发读取和单一写入,你如何保证数据完整性。
  • Java 中 wait 和 sleep 方法有什么区别?
  • 如何在 Java 中实现一个阻塞队列?
  • 如何在 Java 中编写代码解决生产者消费者问题?
  • 写一段死锁代码。你在 Java 中如何解决死锁?

高并发多线程面试解析与拓展

[外链图片转存中…(img-insppatt-1714445493504)]


jvm面试专题与解析

  • JVM 由哪些部分组成?
  • JVM 内存划分?
  • Java 的内存模型?
  • 引用的分类?
  • GC什么时候开始?

JVM面试专题解析与拓展!

[外链图片转存中…(img-Li9Wb11a-1714445493504)]

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 14
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Javaweb是一种使用Java语言编写的Web开发技术,结合JSP(JavaServer Pages)和ServletJava Servlet)可以实现动态Web页面的开发。MySQL是一种开源的关系型数据库管理系统,可以使用SQL语言对其进行操作。 一个典型的Javaweb JSP Servlet MySQL案例源码可以如下: 1. 首先,我们可以创建一个简单的数据库表格,例如一个学生信息表格,包含学生ID、姓名和年龄等字段。 2. 创建一个数据库连接类,用于连接MySQL数据库。在这个类中,我们需要配置数据库连接参数,如数据库URL、用户名和密码等。 3. 创建一个Servlet类,用于处理前端页面请求。在这个类中,我们可以编写处理逻辑,例如查询学生信息、插入新的学生记录等操作。可以使用JDBC(Java Database Connectivity)来实现数据库增删改查操作。 4. 创建一个JSP页面,用于展示数据。在这个页面中,可以使用JSP的标签和表达式语言来获取Servlet返回的数据,并在页面中进行展示。 5. 在web.xml文件中配置Servlet和JSP的映射关系,以及其他必要的配置。 通过以上步骤,我们可以实现一个简单的Javaweb JSP Servlet MySQL案例。用户可以通过前端页面输入查询条件,后端Servlet会将查询结果从数据库中获取并返回给JSP页面进行展示。同时,用户还可以通过前端页面提交数据,后端Servlet会将数据插入到数据库中。 这个案例可以用于教学或者实际项目开发中,通过理解和学习这个案例,可以了解Javaweb开发的基本流程,以及如何使用JSP、Servlet和MySQL进行Web开发

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值