利用JavaWeb实现课程信息添加
整体架构 :HTML+JAVABEAN+SERVLET
一.首先先简单介绍一下所需要的组件 原文地址 https://www.cnblogs.com/zll20153246/p/7871723.html
Servlet 是在服务器上运行的小程序,用来动态的显示 Web 内容。这个流程大概就是
- 客户端发送请求至服务器端;
- 服务器将请求信息发送至 Servlet;
- Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
- 服务器将响应返回给客户端。
JavaBean 说白了就是类而已,只不过现在改了一个名字而已,之前写的时候都是一堆类混在一起,现在就是把他们拆开,按照不同的功能放在一起,一般我们用四个包来区分。

- Bean包:这个包里面放的都是一些属性类,一般数据库里面有什么表,相应的就要有什么bean,当然表里面的数据在bean里面也要全有,比如有一个Student表,表里面有id,name那么在该包下就要建立相应的Studentbean(Studentbean只是一个名字,你自己可以随便取)类,有私有变量id和name,与之对应的get和set函数。
- implement 包:这个包就是放一些类,类里面的函数就是用来对数据库进行操作的,例如增删改查。
- Utils包:这包里面放的就是用来连接数据库的函数,在Dao函数里面直接调用这个就能连接数据库,代码复用。
- Servlet包:这个包放置的就是servlet类,用来网页与后台数据的交互,下面讲解一个简单的登录界面html+javabean+Servlet.
二.环境搭建
1.jdk安装及环境变量配置 (教程地址)https://blog.csdn.net/konggu_youlan/article/details/79942800?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163447732616780255219166%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163447732616780255219166&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-79942800.first_rank_v2_pc_rank_v29&utm_term=jdk%E5%AE%89%E8%A3%85%E5%8F%8A%E9%85%8D%E7%BD%AE&spm=1018.2226.3001.4187
2.tomcat安装及配置 (教程地址)https://blog.csdn.net/qq_40881680/article/details/83582484?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163443660816780357257243%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163443660816780357257243&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-83582484.first_rank_v2_pc_rank_v29&utm_term=tomcat%E5%AE%89%E8%A3%85%E5%8F%8A%E9%85%8D%E7%BD%AE%E6%95%99%E7%A8%8B&spm=1018.2226.3001.4187
3.eclipse配置tomcat (教程地址)https://blog.csdn.net/yerenyuan_pku/article/details/51830104?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163447374416780366566928%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163447374416780366566928&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-51830104.first_rank_v2_pc_rank_v29&utm_term=eclipse%E9%85%8D%E7%BD%AEtomcat&spm=1018.2226.3001.4187
三.建立动态web项目

右侧Dynamic Web Project

建立好之后,各个项目组件在工程目录中的放置位置如上图所示,src/main/java中是按照MVC三层架构进行的包分配
接下来编写相应的组件放到对应的文件目录中(我先把组件的分布情况放到了上面,这样可以更清楚有哪些组件)
四.设计组件
1.设计前端html页面
<!DOCTYPE html>
<html lang="en"> <head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<style>
body {
background-color: #77a3dd;
}
</style> <body>
<form action="/kechengHTML/addServlet" method="POST">
<table align="center" border="1" width="500">
<tr>
<td>课程名称 : </td>
<td>
<input type="text" placeholder="请输入课程名称" name="classname" />
</td>
</tr>
<tr>
<td>任课教师:</td>
<td>
<input type="text" placeholder="请输入教师名称" name="teachername" />
</td>
</tr>
<tr>
<td>上课地点:</td>
<td>
<input type="text" placeholder="请输入上课地点" name="place" />
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</form>
</body> </html>
2.addservlet(前端表单提交的数据被servlet获取)前台表单路径action 为addservlet
package Servlet; import java.io.IOException;
import java.sql.SQLException; 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 Bean.UserInformation;
import implement.implementSQL; /**
* Servlet implementation class addServlet
*/
@WebServlet("/addServlet")
public class addServlet extends HttpServlet {
private static final long serialVersionUID = 1L; /**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub //response.getWriter().append("Served at: ").append(request.getContextPath());
request.setCharacterEncoding("UTF-8");
String teachername=request.getParameter("teachername");
String classname= request.getParameter("classname");
String place= request.getParameter("place");
UserInformation User = new UserInformation();
User.setClassname(classname);
User.setTeachername(teachername);
User.setPlace(place);
implementSQL ADD = new implementSQL();
try {
ADD.add(User);
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
} /**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(request, response);
} }
3.编写javebean
package Bean;
public class UserInformation {
private String teachername;
private String place;
private String classname;
public String getTeachername() {
return teachername;
}
public void setTeachername(String teachername) {
this.teachername = teachername;
}
public String getPlace() {
return place;
}
public void setPlace(String place) {
this.place = place;
}
public String getClassname() {
return classname; }
public void setClassname(String classname) {
this.classname = classname;
}
}
4.编写Dao层(执行sql语句的代码)
package implement; import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException; import Bean.UserInformation;
import Utils.JDBCUtils; public class implementSQL {
public void add(UserInformation user) throws SQLException {
Connection connection = JDBCUtils.getConnection(); String sql = "insert into kecheng(teachername,classname,place) values(?,?,?)";
PreparedStatement preparedStatement = null;
try {
//创建语句传输对象
preparedStatement = connection.prepareStatement(sql); preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, user.getTeachername());
preparedStatement.setString(2, user.getClassname());
preparedStatement.setString(3, user.getPlace());
preparedStatement.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
//关闭资源 JDBCUtils.release((com.mysql.jdbc.Connection) connection, preparedStatement);
//DBUtil.close(connection);
} } }
现在所有的组件都已经建立完毕,只需要放到相应的工程目录下,并将项目部署到tomcat,在eclipse中启动tomcat即可
ps:还有一些细节需要注意,连接数据库需要导入jar包,放到lib目录中并添加至构建路径,jar包的版本一定要和数据库的版本对应,否则会连接失败
利用JavaWeb实现课程信息添加的更多相关文章
- javaweb课程信息管理系统
1.DBUtil包连接数据库 2.Bin包设计成员函数及方法 3.Dao包设计sql语句 4.servlet包增删改查方法 5.service连接servlet 6.设计jsp增删改查页面 7.连接各 ...
- 石家庄铁道大学课程信息管理系统(javaWeb+servlet+Mysql)
实现网页版的课程管理系统,具有增删改查的功能. 1.首先连接数据库,具体数据库的使用及如何连接eclipse,参考 https://blog.csdn.net/lrici/article/de ...
- javaweb中上传图片并显示图片,用我要上传课程信息(里面包括照片)这个例子说明
原理: 从客户端上传到服务器 照片——文件夹——数据库 例如:桌面一张照片,在tomacat里创建upload文件夹,把桌面照片上传到upload文件夹里,并且把照片的 ...
- 课程信息管理系统(javabean + Servlet + jsp)
此项目做的事一个课程管理系统,需要通过web做一个可以实现课程的增删改查的功能. 需要用到数据库,Servlet和jsp等(第一次使用Servlet和数据库连接,所以代码都比较低级,页面也比较粗糙,还 ...
- c#反射机制学习和利用反射获取类型信息
反射(Reflection)是.NET中的重要机制,通过放射,可以在运行时获得.NET中每一个类型(包括类.结构.委托.接口和枚举等)的成员,包括方法.属性.事件,以及构造函数等.还可以获得每个成员的 ...
- .NET 利用反射将对象数据添加到数据库
.NET 利用反射将对象数据添加到数据库 一些小型的项目,在不使用其他的框架(LINQ,NHibernate,EF等等框架)的前提下,这时候一些反复的增删改查就会让我们感到极其的繁琐,厌烦,为了避 ...
- Node.js爬虫-爬取慕课网课程信息
第一次学习Node.js爬虫,所以这时一个简单的爬虫,Node.js的好处就是可以并发的执行 这个爬虫主要就是获取慕课网的课程信息,并把获得的信息存储到一个文件中,其中要用到cheerio库,它可以让 ...
- Java之从头开始编写简单课程信息管理系统
编写简单的课程管理系统对于新手并不友好,想要出色的完成并不容易以下是我的一些经验和方法 详情可参考以下链接: https://www.cnblogs.com/dream0-0/p/10090828.h ...
- C#将异常信息添加到日志
C#将程序抛出的异常信息添加到错误日志 错误日志是软件用来记录运行时出错信息的文本文件.编程人员和维护人员等可以利用错误日志对系统进行调试和维护. 为程序添加错误日志的好处是当程序有运行错误时,根据错 ...
随机推荐
- 【LeetCode】20. Valid Parentheses 有效的括号
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:有效,括号,括号匹配,栈,题解,leetcode, 力扣 ...
- Improving Variational Auto-Encoders using Householder Flow
目录 概 主要内容 代码 Tomczak J. and Welling M. Improving Variational Auto-Encoders using Householder Flow. N ...
- 后缀树的建立-Ukkonen算法
参考: Ukkonen算法讲解 Ukkonen算法动画 Ukkonen算法,以字符串abcabxabcd为例,先介绍一下运算过程,最后讨论一些我自己的理解. 需要维护以下三个变量: 当前扫描位置# 三 ...
- RTD2172替代方案|TYPEC转HDMI4K@60HZ拓展坞|CS5265替代RTD2172
瑞昱RTD2172是TYPEC转HDMI4K60HZ音视频数据转换器芯片.CS5265可以替代兼容RTD2172,除了实现同等的转换功能外且整体方案成本和性价比方面比RTD2172要高,且外围器件较少 ...
- C语言string操作
创建方式 字符数组:空间已定 字符指针:未分配空间 初始化 字符数组: 创建与赋值必须在同一行 指定大小:未填满部分用'\0'填充 用字符串初始化:末尾自动添加'\0' 不初始化赋值则乱值 字符指针: ...
- sping练习,在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台。
相关 知识 >>> 相关 练习 >>> 实现要求: 在Eclipse搭建的Spring开发环境中,使用工厂方式创建Bean对象,将创建的Bean对象输出到控制台.要 ...
- Java的发展简史
Java是由Sun Microsystems公司(简称Sun公司)于1995 年 5 月推出的 Java程序设计语言和Java平台的总称.Java语言是一种可以撰写跨平台应用软件的面向对象的程序设计语 ...
- AWS 15年(2):云原生兴起
AWS创立云计算15年来,没有一个行业不跟云计算相关,没有任何一个颠覆性创新缺少云计算的参与,云已经是不可逆的滚滚洪流. AWS这15年,是云原生服务从无到有再到基本成熟的15年,是云原生应用兴起的1 ...
- java知识点链接
业务复杂=if else?刚来的大神竟然用策略+工厂彻底干掉了他们! 细思极恐-你真的会写java吗? [解锁新姿势] 兄dei,你代码需要优化了 消灭 Java 代码的"坏味道" ...
- RabbitMQ使用 prefetch_count优化队列的消费,使用死信队列和延迟队列实现消息的定时重试,golang版本
RabbitMQ 的优化 channel prefetch Count 死信队列 什么是死信队列 使用场景 代码实现 延迟队列 什么是延迟队列 使用场景 实现延迟队列的方式 Queue TTL Mes ...