利用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】229. Majority Element II 解题报告(Python & C++)
作者: 负雪明烛 id: fuxuemingzhu 个人博客: http://fuxuemingzhu.cn/ 目录 题目描述 题目大意 解题方法 hashmap统计次数 摩尔投票法 Moore Vo ...
- 【剑指Offer】丑数 解题报告
[剑指Offer]丑数 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题目描述: ...
- TLS、SSL
TLS/SSL 的功能实现主要依赖于三类基本算法:散列函数 Hash.对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性. ...
- javaScript系列 [27]- DOM
本文将详细介绍DOM相关的知识点,包括但不限于Document文档结构.Node节点.Node节点的类型.Node节点的关系以及DOM的基本操作( 节点的获取.节点的创建.节点的插入.节点的克隆和删除 ...
- Java Record 的一些思考 - 序列化相关
Java Record 序列化相关 Record 在设计之初,就是为了找寻一种纯表示数据的类型载体.Java 的 class 现在经过不断的迭代做功能加法,用法已经非常复杂,各种语法糖,各种多态构造器 ...
- Oracle 系统函数
函数名称 返回值类型 说明 示例 字符串函数 ascii(str) number 返回str首字母的ASCII码 select ascii('A') from dual; --65select a ...
- css 垂直居中技巧
CSS垂直居中技巧,我只会23个,你会几个?自古以来(是有多?~),网页CSS的垂直居中需求始终没有停过,而其困难度也始终没有让人轻松过,经过了每位开发先烈的研究后,据说CSS的垂直居中技巧已达到近十 ...
- Docker入门篇(一)安装docker
Docker入门篇(一)安装docker Docker的来源 由dotCloud公司首创及正式命名,但是企业规模小,影响力不够,所以在快要坚持不住的时候,开始吃百家饭--开源了.不开则已,一开惊人.越 ...
- Android WebView优化
1.展示webview的activity可以另开一个进程,这样就能和我们app的主进程分开了,即使webview产生了oom崩溃等问题也不会影响到主程序,如何实现呢,其实很简单,在androidman ...
- django框架--登录注册功能(ajax)
注册 实现一个注册功能 编写 html 内容 input 标签 csrf_token ajax 路由 视图: 提供页面 负责处理业务,返回响应 接收到 post 请求传递的参数 写库 返回 ...