利用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】48. Rotate Image 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 日期 题目地址:https://leetcode.c ...
- ☕【难点攻克技术系列】「海量数据计算系列」如何使用BitMap在海量数据中对相应的进行去重、查找和排序
BitMap(位图)的介绍 BitMap从字面的意思,很多人认为是位图,其实准确的来说,翻译成基于位的映射,其中数据库中有一种索引就叫做位图索引. 在具有性能优化的数据结构中,大家使用最多的就是has ...
- 编写Java程序,模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员。教练员包括乒乓球教练和篮球教练。为了方便出国交流,根乒乓球相关的人员都需要学习英语。
需求说明: 模拟教练员和运动员出国比赛场景,其中运动员包括乒乓球运动员和篮球运动员.教练员包括乒乓球教练和篮球教练.为了方便出国交流,根乒乓球相关的人员都需要学习英语.具体分析如下: (1)共同的属性 ...
- svn钩子脚本
使用钩子脚本的意义: 我们在测试环境中搭建好svn后,开发人员可以正常的上传和下载写好的代码了.但是上传到测试服务器,在版本库中(tshop)是看不到这些数据的.所以在测试环境中(linux测试服 ...
- unittest_TestSuite测试套件(2)
在前面一章中演示了unittest如何执行一个简单的测试,但有两个问题: 我们知道测试用例的执行顺序是根据测试用例名称顺序执行的,在不改变用例名称的情况下,我们怎么来控制用例执行的顺序呢? 一个测试文 ...
- vue render中如何正确配置img的路径
第一种:适用于静态路径 attrs: { src: require('../common/images/logo.png'), title: 'img' } 第二种:适用于动态路径 domProps: ...
- vue爬坑之路(webpack 配置篇)
在vue cli下 1.npm run dev 打开浏览器在config的index.js中修改autoOpenBrowser为true 关闭sourcemap productionSourceMap ...
- javascript实现数字整数位每三位一个逗号分隔
Number(1234567).toLocaleString(); //结果"1,234,567" Number(123456789).toLocaleString()//结果&q ...
- 查询 MySQL 字段注释的 5 种方法!
很多场景下,我们需要查看 MySQL 中表注释,或者是某张表下所有字段的注释,所以本文就来盘点和对比一下查询注释的几种方式. 创建测试数据库 开始之前咱们先创建一个数据库,以备下面演示使用. -- 如 ...
- Java反射详解:入门+使用+原理+应用场景
反射非常强大和有用,现在市面上绝大部分框架(spring.mybatis.rocketmq等等)中都有反射的影子,反射机制在框架设计中占有举足轻重的作用. 所以,在你Java进阶的道路上,你需要掌握好 ...