实验内容:基于 JSP+Mysql 做一个简单的学生成绩查询web系统。
文章目录
一、Java Web
Java Web,是用Java技术来解决相关web互联网领域的技术总和。web包括:web服务器和web客户端两部分。Java在客户端的应用有java applet,不过使用得很少,Java在服务器端的应用非常的丰富,比如Servlet,JSP和第三方框架等等。Java技术对Web领域的发展注入了强大的动力。
1、 B/S系统
B/S结构(Browser/Server,浏览器/服务器模式),是WEB兴起后的一种网络结构模式,WEB浏览器是客户端最主要的应用软件。这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器,如Netscape Navigator或Internet Explorer,服务器安装SQL Server、Oracle、MYSQL等数据库。浏览器通过Web Server 同数据库进行数据交互。
2、主要框架
Java web涉及的技术框架包括:Struts、SpringMVC、springboot。
Java的Web框架虽然各不相同,但基本也都是遵循特定的路数的:使用Servlet或者Filter拦截请求,使用MVC的思想设计架构,使用约定,XML或 Annotation实现配置,运用Java面向对象的特点,面向对象实现请求和响应的流程,支持Jsp,Freemarker,Velocity等视图。
3、servlet
Servlet是sun公司提供的一门用于开发动态web资源的技术。
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
Sun公司在其API中提供了一个servlet接口,用户若想开发一个动态web资源(即开发一个Java程序向浏览器输出数据),需要完成以下2个步骤:
1、编写一个Java类,实现servlet接口。
2、把开发好的Java类部署到web服务器中。
按照一种约定俗成的称呼习惯,通常我们也把实现了servlet接口的java程序,称之为Servlet
4.Web服务器
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。
目前最主流的三个Web服务器是Apache、 Nginx、 IIS。
在UNⅨ和LINUX平台下使用最广泛的免费HTTP服务器是Apache和Nginx服务器,而Windows平台NT/2000/2003使用ⅡS的WEB服务器。
Tomcat
Tomcat服务器是一个免费的开放源代码的Web应用服务器。Tomcat是Apache软件基金会(Apache Software Foundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。由于有了Sun的参与和支持,最新的Servlet 和JSP规范总是能在Tomcat中得到体现。因为Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,是目前比较流行的Web应用服务器。
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。
5、JSP
JSP全名为Java Server Pages,中文名叫java服务器页面,其根本是一个简化的Servlet设计。
JSP技术有点类似ASP技术,它是在传统的网页HTML(标准通用标记语言的子集)文件(.htm,.html)中插入Java程序段(Scriptlet)和JSP标记(tag),从而形成JSP文件,后缀名为(*.jsp)。 用JSP开发的Web应用是跨平台的,既能在Linux下运行,也能在其他操作系统上运行。
它实现了Html语法中的java扩展(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的。通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。
二、代码实现
参考地址:学生成绩管理系统3.0(JSP+Servlet+MySQL)
成功演示
主要代码
导入驱动jar包
这里连接的是MySql数据库,使用连接MySql的jar包。
连接数据库
驱动:org.gjt.mm.mysql.Driver
URL:jdbc:mysql://<machine_name><:port>/dbname
注:machine_name:数据库所在的机器的名称;
port:端口号,默认3306
import java.sql.DriverManager;
import com.mysql.jdbc.*;
public class Dbacesss {
String driverName="org.gjt.mm.mysql.Driver";
String dbUrl="jdbc:mysql://localhost:3306/studentsystem?useUnicode=true&characterEncoding=utf8";
String userName="root";
String password="123456";
public Connection conn=null;
public Dbacesss() {
try {
Class.forName(driverName);
conn=(Connection) DriverManager.getConnection(dbUrl, userName, password);
System.out.println("数据库连接成功");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据库连接失败");
}
}
public void close(){
try{
this.conn.close();
//this.pst.close();
System.out.println("关闭数据库成功");
}catch(Exception e){
e.printStackTrace();
System.out.print("关闭失败");
}
}
}
建立Student,Course对象
public class Student {
private int sid; // 编号
private String sname; // 名字
private String spwd; // 密码
public int getSid() {
return sid;
}
public void setSid(int sid) {
this.sid = sid;
}
public String getSpwd() {
return spwd;
}
public void setSpwd(String spwd) {
this.spwd = spwd;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
}
public class Course {
private int cid; // 编号
private String cname; //名称
private int credit; //学分
private double score; // 成绩
public int getCid() {
return cid;
}
public void setCid(int cid) {
this.cid = cid;
}
public String getCname() {
return cname;
}
public void setCname(String cname) {
this.cname = cname;
}
public int getCredit() {
return credit;
}
public void setCredit(int credit) {
this.credit = credit;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
}
建立数据库并建表
数据库模型
代码如下:
/*
Navicat MySQL Data Transfer
Source Server : Mysql
Source Server Version : 80022
Source Host : localhost:3306
Source Database : studentsystem
Target Server Type : MYSQL
Target Server Version : 80022
File Encoding : 65001
Date: 2021-01-10 18:39:11
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
`cid` int DEFAULT NULL,
`cname` varchar(20) COLLATE utf8_czech_ci DEFAULT NULL,
`credit` int DEFAULT NULL,
`score` double DEFAULT NULL,
KEY `cid` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
-- ----------------------------
-- Table structure for grade
-- ----------------------------
DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade` (
`sid` int DEFAULT NULL,
`cid` int DEFAULT NULL,
`grade` double DEFAULT NULL,
KEY `sid` (`sid`),
KEY `cid` (`cid`),
CONSTRAINT `grade_ibfk_1` FOREIGN KEY (`sid`) REFERENCES `student` (`sid`),
CONSTRAINT `grade_ibfk_2` FOREIGN KEY (`cid`) REFERENCES `course` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`sid` int DEFAULT NULL,
`sname` varchar(20) COLLATE utf8_czech_ci DEFAULT NULL,
`spwd` varchar(20) COLLATE utf8_czech_ci DEFAULT NULL,
KEY `sid` (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
-- ----------------------------
-- Table structure for users
-- ----------------------------
DROP TABLE IF EXISTS `users`;
CREATE TABLE `users` (
`username` varchar(10) COLLATE utf8_czech_ci DEFAULT NULL,
`password` varchar(10) COLLATE utf8_czech_ci DEFAULT NULL,
`type` int DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
使用sql完成对数据库的操作
public class test {
static String sql=null;
static Dbacesss dbl=null;
static ResultSet result=null;
public static void main(String[] args) {
sql="select * from student";
dbl=new Dbacesss(sql);
try{
result=dbl.pst.executeQuery();
while(result.next()){
int no=result.getInt(1);
String sname=result.getString(2);
String spwd=result.getString(3);
System.out.println(no+"\t"+sname+"\t"+spwd+"\t");
}
}catch(Exception e){
e.printStackTrace();
}
}
}
使用sql可以得到student表所有数据信息,增删改查,可类似实现。
完成Tomcat的配置以及部署项目
windows下载tomcat,并在eclipose中winow->perference 选择server,点击add选择添加tomcat,将项目部署到tomcat上面。
servlet的使用
新建servlet文件,继承HttpServlet。
跳转发送
String forwordUrl=null;
RequestDispatcher rd=null;
if(userName.equals("admin")&&password.equals("123")) {
forwordUrl="/temp/login/success.jsp";
rd=req.getRequestDispatcher(forwordUrl);
rd.forward(req, resp);
}else {
forwordUrl="/temp/login/fail.jsp";
rd=req.getRequestDispatcher(forwordUrl);
rd.forward(req, resp);
}
导入bootstrap和jquery完成美化页面
官方网站:Bootstrap
将下载好的bootstrap和jquery复制到文件目录
注意导入顺序
先引入 bootstrap.min.css (Bootstrap的样式表文件)
然后引入自己写的 css 文件(style.css)
然后引入 jQuery(javascript 库)
最后引入 bootstrap.min.js 程序文件
导出项目war文件部署到tomcat
网页查看
找不见页面,首先启动tomcat!
这里只完成了登录,其他类似 >0< 。
三、实验总结
搞了好久,感觉还是做的不太行,搞什么不行非得搞java。