Web基础之Servlet+JDBC+JSP项目实战记录(一)
package com.huaxin.bean;public class ClassInfoBean {/*** 属性和数据库中的字段相对应*/private Integer cid;private String cname;public ClassInfoBean() {}public Integer getCid() {return cid;}public void setCid(Integer cid) {this.cid = cid;}public String getCname() {return cname;}public void setCname(String cname) {this.cname = cname;}
}
package com.huaxin.dao;import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;import com.huaxin.bean.ClassInfoBean;public class ClassInfoDao {static {// 加载数据库驱动try {Class.forName("com.mysql.jdbc.Driver");} catch (ClassNotFoundException e) {e.printStackTrace();}}public void addClassInfo(ClassInfoBean bean) {Connection conn = null;Statement stmt = null;try {// 获取数据库连接conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/studentsystem?useUnicode=true&characterEncoding=UTF-8","root", "zhou");// 整理一条SQL语句String sql = "INSERT INTO class_info (cname) VALUES ('"+ bean.getCname() + "')";// 创建SQL执行对象stmt = conn.createStatement();// 执行sql语句int row = stmt.executeUpdate(sql);if (row != 1) {throw new RuntimeException("新增班级失败!");}} catch (SQLException e) {e.printStackTrace();} finally {if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}if (stmt != null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}}}public List<ClassInfoBean> findAll() {Connection conn = null;Statement stmt = null;List<ClassInfoBean> classList= new ArrayList<ClassInfoBean>();try {// 获取连接conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/studentsystem?useUnicode=true&characterEncoding=UTF-8","root", "zhou");// 整理一条SQL语句String sql = "select cid,cname from class_info";// 创建执行sql的对象stmt = conn.createStatement();//执行sql语句ResultSet rs =stmt.executeQuery(sql);//遍历结果集while(rs.next()){int cid =rs.getInt("cid");String cname=rs.getString("cname");ClassInfoBean bean = new ClassInfoBean();bean.setCid(cid);bean.setCname(cname);classList.add(bean);}} catch (SQLException e) {e.printStackTrace();}return classList;}}
前台页面用JSP书写(JSP是实现动态页面效果的技术之一,因为JSP里面可以嵌入Java代码;还记得Request作用域吗?我们首先需要将查询出来的结果保存到Request作用域中。然后通过在服务器端执行JSP后生成响应正文给客户端;这里需要明白的是,JSP里面的Java代码是在服务器端执行完毕后,才通过响应正文到达客户端;平时我们自己写得html页面访问的是本地的资源,就相当于在本地打开了一份Word文档;JSP这部分后面会有详解;)
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<%@ page import ="com.huaxin.bean.ClassInfoBean" %>
<%@ page import ="java.util.List" %><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>班级信息界面</title>
<style type="text/css">
th{text-align: center;
}
td{text-align: center;
}
</style>
</head>
<body><div style="margin:0 auto;margin-top: 40px;">
<form action="classInfoReq" method="POST">
<center>
<table width="40%"; border="1"; bgcolor="#FFFFC6">
<caption style="margin-bottom: 20px">新增班级信息</caption>
<tr><td >班级名称:</td><td><input type="text" name="className"></td></tr>
<tr><td><input type="reset" value="重置"></td><td><input type="submit" value="确定"></td></tr>
</table>
</center>
</form>
</div><div style="margin:0 auto;margin-top: 40px;">
<center>
<table width="40%"; border="1"; bgcolor="#FFFFC6">
<caption style="margin-bottom: 20px">班级信息列表</caption>
<tr><th>班级序号</th><th>班级名称</th></tr>
<% List<ClassInfoBean> classInfo=(List<ClassInfoBean>)request.getAttribute("classInfo");if(classInfo!=null && !classInfo.isEmpty()){for(ClassInfoBean classes : classInfo){%> <tr><td><%=classes.getCid() %></td><td><%=classes.getCname()%></td></tr>
<% }}
%>
</table>
</center>
</div>
</body>
</html>
package com.huaxin.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.huaxin.bean.ClassInfoBean;
import com.huaxin.dao.ClassInfoDao;public class ClassInfoServlet extends HttpServlet{private static final long serialVersionUID = 1L;protected void doGet(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {this.doPost(req, resp);}protected void doPost(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {//设置编码,防止请求乱码req.setCharacterEncoding("UTF-8");//获取参数String className=req.getParameter("className");//创建ClassInfoBean对象保存信息ClassInfoBean bean =new ClassInfoBean();bean.setCname(className);//创建数据库操作对象ClassInfoDao dao =new ClassInfoDao();//新增班级信息到数据库dao.addClassInfo(bean);//查询所有班级信息List<ClassInfoBean> classInfo=dao.findAll();//保存查询的班级信息 req.setAttribute("classInfo", classInfo);//转发请求req.getRequestDispatcher("/classInfo.jsp").forward(req, resp);}
}
web.xml配置文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><display-name>JDBC</display-name><welcome-file-list><welcome-file>index.html</welcome-file><welcome-file>index.htm</welcome-file><welcome-file>index.jsp</welcome-file><welcome-file>default.html</welcome-file><welcome-file>default.htm</welcome-file><welcome-file>default.jsp</welcome-file></welcome-file-list><servlet><servlet-name>classInfo</servlet-name><servlet-class>com.huaxin.servlet.ClassInfoServlet</servlet-class></servlet><servlet-mapping><servlet-name>classInfo</servlet-name><url-pattern>/classInfoReq</url-pattern></servlet-mapping>
</web-app>
六、总结
Web基础之Servlet+JDBC+JSP项目实战记录(一)相关推荐
- Web基础(从入门到项目实战)
文章目录 一 .知识急救箱 1.知识框架 a. HTML 内容元素 表单元素 功能元素 其他元素 b. CSS CSS选择器 CSS文本样式 CSS单位与颜色值 CSS字体与文本.段落样式控制 背景颜 ...
- 零基础学习嵌入式入门以及项目实战开发【手把手教+国内独家+原创】
零基础学习嵌入式入门以及项目实战开发[手把手教+国内独家+原创] 独家拥有,绝对经典 创 科 之 龙 嵌入式开发经典系列教程 [第一期] 主讲人: ...
- request、response揭秘(备java基础,servlet,jsp,javaee)-任亮-专题视频课程
request.response揭秘(备java基础,servlet,jsp,javaee)-3658人已学习 课程介绍 掌握Request对象的作用,期属性,response特点. ...
- Servlet+jdbc+jsp增删改查
Servlet+jdbc+jsp增删改查 目录 Servlet 1. 新建一个工程名为servletStudy 2. tomcat xml配置 3. servlet类 User类 Function类 ...
- 【创科之龙】零基础学习嵌入式开发以及项目实战开发【第二期视频】
[创科之龙]零基础学习嵌入式开发以及项目实战开发[学习交流零基础火热进行ing] 大家好,我是aiku,上期的项目学习资料在电子发烧友论坛上分享,大家觉得都很好. 在这里我首先要感谢电子发烧友给我们的 ...
- 【网络通信 -- WebRTC】项目实战记录 -- Chrome 启动参数总结
[网络通信 -- WebRTC]项目实战记录 -- Chrome 启动参数总结 1 -- 报告伪分配跟踪.伪跟踪从当前活动的跟踪事件派生. 2 --/prefetch:1 /prefetch:启动各种 ...
- 【网络通信 -- SIP 电话】项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试
[网络通信 -- SIP 电话]项目实战记录 -- SIP 服务器 OPENSIPS 搭建测试与 SIP 客户端 PJSIP 编译安装测试 [1]SIP 服务器 OPENSIPS 搭建 1.1 安装环 ...
- python数据分析与挖掘项目实战记录
python数据挖掘项目实战记录 取自<Python数据分析与挖掘实战>一书,整理各个项目中用到的数据处理方法: 数据预处理方法 建立模型方法 绘制图形 对于分类问题:用模型分类:混淆矩阵 ...
- 【网络通信 -- 直播】项目实战记录 -- 弱网模拟工具
[网络通信 -- 直播]项目实战记录 -- 弱网模拟工具 [1]Windows 系统中弱网模拟工具 Windows 系统中可以使用 Clumsy 工具模拟弱网环境 Lag(延迟),把数据包缓存一段时间 ...
最新文章
- 不动的,稳定的,有序的东西就是低熵,相反的就是动的,不稳定的
- 07-狄克斯特拉算法
- 面试题系列(10):一个大型电商网有大量的图片,加载很慢,你有哪些方法优化这些图片的加载?...
- php开发当中遇到的各种问题,PHP项目开发中遇到过的问题
- 自定义音乐播放器的歌词显示view
- 计算机组老师颁奖词,学校优秀老师颁奖词
- 存储崩溃、虚拟磁盘丢失、分区表丢失这些故障如何解决
- 因为计算机丢失user32.dll,电脑丢失USER32.dll怎么处理
- 启动docker时映射到宿主机时出现 /usr/bin/docker-current: Error response from daemon: driver failed……的解决方案
- 安卓模拟器刷小米系统_小米安卓模拟器|小米手游模拟器下载 v1.0.0.8 电脑版_小皮网...
- 洛谷题单 算法1-3 暴力枚举
- 机器学习,深度学习,环境搭建 #博学谷IT学习技术支持#
- 【线下沙龙免费报名】像阿里巴巴一样工作_听干货分享欣赏阿里西溪园区风景
- 【三维重建学习之路01】点云ply文件的读写、修改
- SpringBoot系统整理|基础篇|黑马视频
- Kali实现局域网ARP欺骗和ARP攻击
- PVE 安装群晖img文件 non-existent or non-regular file故障解决办法
- 后台开发,从基础到高级,有什么好的书籍推荐?
- 数据结构学习(C++)——队列应用(事件驱动模拟)
- [ctf.show.reverse] BJDCTF2020 encode
热门文章
- Day11OSI与TCP/IP协议簇以及物理层
- 解决:java.lang.IllegalStateException: Failed to load property source from ‘file:~application.yml
- java redis geo_Redis GEO
- HTML5七夕情人节表白网页(圣诞雪花飘落) HTML+CSS+JS 求婚 html生日快乐祝福代码网页 520情人节告白代码 程序员表白源码 抖音3D旋转相册 js烟花代码 css爱心表白
- 【尚硅谷-Java学习】scanner.next()和scanner.nextLine()
- 《动手学深度学习》(PyTorch版)避坑总结 - 1 【d2lzh_pytorch模块导入方法详解及提示错误的解决方法】
- Revit版本对应的.NET框架版本
- 火山PC布局器套布局器
- 这半年没批版号了,那些手游是怎么通过广电审核这一关并成功上架的?
- C++基础知识与开发环境【修订版】