Java Web 开发的JavaBean + Servlet + Sql Server
日期:2018.12.9
博客期:026
星期日
我知道对于每个人都需要对开发web进行了解,而我们常用的技术,也应该有所了解
/*<------------------->*/知识点:
1、JavaBean
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
2、Servlet
3、Sql Server
——资料来源于《百度百科》
/*<------------------->*/建立网站系统的操作步骤:
1、安装集成环境(Eclipse以及其web组件安装完全的可以跳过)
(1)、登陆官网下载eclipse(版本:Eclipse Java EE IDE for Web Developers.)
下载地址: https://www.eclipse.org/downloads/
(2)、之后找到Tomcat官网去下载tomcat服务器【请根据自己的Eclipse支持的Tomcat版本选择】
下载地址: http://tomcat.apache.org/download-70.cgi
(3)、准备eclipse的环境配置:
这个参考之前的博客,可以找到基本路径的配置
(4)、在Eclipse里供应Tomcat服务
这个需要在 窗口 的栏目 首选项 里找到 Server 一栏,再找到 RunTime Environments 一项,如果没有任何服务,则选择添加服务,对应你安装的位置,依次顺下来就可以啦!
2、项目的基本构建
(1)、在项目资源管理器里鼠标右击,选择新建项目,勾选 Dynamic Web Project 一项,并单击“下一步”
之后,写入项目名称,单击“完成”
呃~把下图两个包复制粘贴到lib文件下,lib目录也如下:
它会自动导入Jar包:
classes12.jar
json-rpc-1.0.jar
如果没有将My Sql 的 Jar 包导入的朋友可以选择把mysql(省略).jar也导入进去。
再新建 web.xml 在上图位置,写这个文件的问题留到之后去说。
新建专门用来写CSS和Java Script的两个文件夹(个人习惯)
jsp统一建在WEB-INF文件夹下
分别建立JavaBean的基础类和Servlet以及SqlServer的包
3、建立JavaBean
就拿Student来说,和Java一样,新建类输入名称Student,写基本属性,鼠标右击选择“源码”,自动生成所有的set、get方法和构造方法,另外再写一个Display()方法,用于相关连接的测试。
package basic; public class Student {
//-----------------------------------<数据域>----------------------------------------//
//名字
protected String name;
//性别
protected boolean sex;
//学号
protected String studentNumber;
//年龄
protected int age;
//综合测评分数
protected double score;
//-----------------------------------<方法域>----------------------------------------//
//---[set、get方法]
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isSex() {
return sex;
}
public int getSex(){
return sex?1:0;
}
public void setSex(int sex){
this.sex = sex!=0;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public String getStudentNumber() {
return studentNumber;
}
public void setStudentNumber(String studentNumber) {
this.studentNumber = studentNumber;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getScore() {
return score;
}
public void setScore(double score) {
this.score = score;
}
//---[构造方法]
public Student(){
name = "";
studentNumber = "";
age = 0;
score = 0.0;
sex = false;
}
public Student(String Name){
name = Name;
studentNumber = "";
age = 0;
score = 0.0;
sex = false;
}
public Student(int Age){
name = "";
studentNumber = "";
age = Age;
score = 0.0;
sex = false;
}
public Student(double Score){
name = "";
studentNumber = "";
age = 0;
score = Score;
sex = false;
}
public Student(boolean Sex){
name = "";
studentNumber = "";
age = 0;
score = 0.0;
sex = Sex;
}
public Student(String Name,String StudentNumber){
name = Name;
studentNumber = StudentNumber;
age = 0;
score = 0.0;
sex = false;
}
public Student(String Name,int Age,double Score,boolean Sex){
name = Name;
studentNumber = "";
age = Age;
score = Score;
sex = Sex;
}
public Student(String Name,String StudentNumber,double Score,boolean Sex){
name = Name;
studentNumber = StudentNumber;
age = 0;
score = Score;
sex = Sex;
}
public Student(String Name,String StudentNumber,int Age,boolean Sex){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = 0.0;
sex = Sex;
}
public Student(String Name,String StudentNumber,int Age,double Score){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = false;
}
public Student(String Name,String StudentNumber,int Age,double Score,boolean Sex){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(String Name,String StudentNumber,double Score,boolean Sex,int Age){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(String Name,String StudentNumber,double Score,int Age,boolean Sex){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(String Name,String StudentNumber,int Age,boolean Sex,double Score){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(String Name,String StudentNumber,boolean Sex,int Age,double Score){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(String Name,int Age,String StudentNumber,boolean Sex,double Score){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(String Name,int Age,boolean Sex,String StudentNumber,double Score){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(String Name,int Age,boolean Sex,double Score,String StudentNumber){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(int Age,String Name,String StudentNumber,boolean Sex,double Score){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(int Age,String Name,boolean Sex,String StudentNumber,double Score){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
public Student(int Age,String Name,boolean Sex,double Score,String StudentNumber){
name = Name;
studentNumber = StudentNumber;
age = Age;
score = Score;
sex = Sex;
}
//---[显示方法]---[阶段性测试]
public void Display(){
System.out.printf("%-20s\t",name);
System.out.println(studentNumber+"\t"+age+"\t"+score+"\t"+sex);
}
}
Student
当然可以不写这么多的没用的构造方法。
4、建立Sql Server
嗯,写一个增删改查的大类,LinkToMySQL ,叫什么名字无所谓,关键是使用的方式:
package basic; import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; public class LinkToMySQL {
//=======================================================================================【数据区】
//JDBC 驱动名
private final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
//数据库 URL
private final String DB_URL = "jdbc:mysql://localhost:3306/2048?useSSL=false";
//用户名
private final String USER = "root";
//密码
private final String PASS = "123456";
//构造器
private Connection conn = null;
private Statement stmt = null;
private ResultSet rs = null;
//=======================================================================================【方法区】
//-------《返回是否存在学号为StuNum的数据》
public boolean exsit(String stunum){
ReSetResult("SELECT StuNum from StudentInformation");
try {
while(rs.next())
{
String s = rs.getString("StuNum");
if(s.compareTo(stunum)==0)
return true;
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return false;
}
//-------《重设rs》
public void ReSetResult(String sql){
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
} catch (SQLException e) {
e.printStackTrace();
}
}
//-------《增删改查》
//添加一个学生数据
public void Add(Student x){
PreparedStatement stmts = null;
try {
stmts = (PreparedStatement) conn.prepareStatement("insert into StudentInformation values (?,?,?,?,?)");
stmts.setString(1, x.getName());
stmts.setString(2, x.getStudentNumber());
stmts.setInt(3, x.isSex()?1:0);
stmts.setInt(4, x.getAge());
stmts.setDouble(5, x.getScore());
stmts.executeUpdate();
stmts.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//删除一个学生数据
public void Delete_StuNum(String stunumber){
PreparedStatement stmts = null;
try {
stmts = (PreparedStatement) conn.prepareStatement("delete from StudentInformation where StuNum=?");
stmts.setString(1,stunumber);
stmts.executeUpdate();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
public void Delete_Name(String name){
PreparedStatement stmts = null;
try {
stmts = (PreparedStatement) conn.prepareStatement("delete from StudentInformation where Name=?");
stmts.setString(1,name);
stmts.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
//更新一个学生数据
public void Renew(String stunumber,Student x){
PreparedStatement stmts;
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL,USER,PASS);
stmt = conn.createStatement();
stmts = (PreparedStatement) conn.prepareStatement("update StudentInformation set Name=?, StuNum=?, Sex=?, Age=?, Score=? where StuNum=?");
stmts.setString(1,x.getName());
stmts.setString(2,x.getStudentNumber());
stmts.setInt(3,x.isSex()?1:0);
stmts.setInt(4,x.getAge());
stmts.setDouble(5,x.getScore());
stmts.setString(6,stunumber);
stmts.executeUpdate();
stmts.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//查询第几个学生数据
public Student GetFromSQL(int number){
if(number <=0||number>Length())
return null;
ReSetResult("SELECT Name, StuNum, Sex, Age, Score FROM StudentInformation");
try {
int i = 1;
while(rs.next()&&number>=i)
{
String Name = rs.getString("Name");
String StuNum = rs.getString("StuNum");
int Sex = rs.getInt("Sex");
int Age = rs.getInt("Age");
double Score = rs.getDouble("Score");
if(number==i)
return new Student(Name,StuNum,Sex!=0,Age,Score);
++i;
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return null;
}
//查询一个学生数据
public Student Refer(String stunumber){
ReSetResult("SELECT Name, StuNum, Sex, Age, Score FROM StudentInformation");
Student s = null;
try {
while(rs.next())
{
String Name = rs.getString("Name");
String StuNum = rs.getString("StuNum");
int Sex = rs.getInt("Sex");
int Age = rs.getInt("Age");
double Score = rs.getDouble("Score");
if(StuNum.compareTo(stunumber)==0)
s = new Student(Name,StuNum,Age,Sex==1?true:false,Score);
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return s;
}
//-------《数据数》
public int Length(){
ReSetResult("SELECT Name, StuNum, Sex, Age, Score FROM StudentInformation");
int l = 0;
try {
while(rs.next())
{
++l;
}
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
return l;
}
//-------《释放》
public void free(){
try {
stmt.close();
conn.close();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//-------《构造方法》
public LinkToMySQL(){
try {
Class.forName(JDBC_DRIVER);
conn = DriverManager.getConnection(DB_URL,USER,PASS);
} catch (ClassNotFoundException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
} catch (SQLException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
//-------《主方法》
public static void main(String[] args) {
LinkToMySQL l = new LinkToMySQL();
//Student stu = new Student("YaLiShanDa","20170014",true,19,80.5);
//l.Add(stu);
l.Refer("20170001").Display();
/*
for(int i = 1;i<=l.Length();++i)
l.GetFromSQL(i).Display();
*/
}
}
Sql Server
基本就是这个样子,根据JavaBean来修改SqlServer语句,或者MySQL里的表位置不同,root的密码不同,甚至用户都不是root等等情况都需要做出更改。
还有每一个servlet调用完后,就需要使用一下free()方法,来关闭构造器。
5、搭建jsp框架
使用<b>、<html>、<a>、<div>、<p>、<table>、<script>、<input>等标签搭建基本的HTML框架,这个我不能再教了,参考百度搜索“菜鸟教程”,选择HTML教程。
6、构建Sevlet,实现连接
每一个servlet都需要继承
5、写Servlet进行
package model; import java.io.IOException; import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import org.json.JSONArray;
import org.json.JSONObject; import basic.LinkToMySQL;
import basic.Student; @SuppressWarnings("serial")
public class ReferStudentServlet extends HttpServlet
{
public LinkToMySQL ltmsql = new LinkToMySQL();
//查询信息
public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException
{
doPost(request, response);
}
public void doPost(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException
{
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("application/json");
response.setHeader("Cache-Control", "no-cache");
response.setHeader("Pragma", "no-cache");
//获得数据的方法
String stunumber = request.getParameter("PrintInStuNumber");
//使用JSON 传递数据
JSONArray json = new JSONArray();
JSONObject jo = new JSONObject();
JSONObject jos = new JSONObject();
jos.put("Length",1);
json.put(jos);
Student question = ltmsql.Refer(stunumber);
if(ltmsql.exsit(stunumber))
{
jo.put("Name",question.getName());
jo.put("StudentNumber",question.getStudentNumber());
jo.put("Sex",question.getSex());
jo.put("Age",question.getAge());
jo.put("Score",question.getScore());
}
else
{
jo.put("Name",null);
jo.put("StudentNumber",null);
jo.put("Sex",null);
jo.put("Age",null);
jo.put("Score",null);
}
json.put(jo);
ServletOutputStream os = response.getOutputStream();
os.write(json.toString().getBytes());
os.flush();
os.close();
}
}
servlet
(1)、使用 JSON 的套用格式传数据给jsp,而通过request.getParameter的方法,来实现对jsp的数据调用
(2)、每新建一个servlet就要在web.xml里写入这个servlet的配置(下方代码以model.BaseServlet为例)
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>BaseServlet</servlet-name>
<servlet-class>model.BaseServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BaseServlet</servlet-name>
<url-pattern>/model/BaseServlet</url-pattern>
</servlet-mapping>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>AllStudentServlet</servlet-name>
<servlet-class>model.AllStudentServlet</servlet-class>
</servlet>
AddArea
(3)、还有啊!在jsp或js文件里写入调用servlet的代码:
<script type="text/javascript">
window.onload=function()
{ };
function Back(){
window.location.href = "FirstWin.jsp";
}
function Refer()
{
if(document.getElementById("StuNum").value=="")
{
alert("错误:学号不能为空!");
return;
}
else
MakeTable();
}
function MakeTable()
{
var xmlHttp = null;
try{
xmlHttp = new XMLHttpRequest();
} catch (e1) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e2) {
alert("Your browser does not support XMLHTTP!");
return;
}
}
xmlHttp.onreadystatechange = function() {
if (xmlHttp.readyState == 4) {
if (xmlHttp.status == 200)
{
alert("修改成功!");
}
else
alert(xmlHttp.status);
}
};
var server = "PrintInStuNumber="+document.getElementById("StuNum").value;
server += "&name="+document.getElementById("NAME").value;
server += "&stunumber="+document.getElementById("STUNUMS").value;
server += "&sex="+document.getElementById("SEX").value;
server += "&age="+document.getElementById("AGE").value;
server += "&score="+document.getElementById("SCORE").value;
var url ="model/ChangeStudentServlet";
xmlHttp.open("POST", url, true);
xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
xmlHttp.send(server);
}
</script>
servletRun
注意对于jsp里的元素调用,使用document.getElementById("SCORE")方法得到元素,之后再*.value或*.innerHTML来实现取值。
Java Web 开发的JavaBean + Servlet + Sql Server的更多相关文章
- SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。
熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...
- 【Java Web开发学习】Servlet、Filter、Listener
[Java Web开发学习]Servlet 转发:https://www.cnblogs.com/yangchongxing/p/9274739.html 1.Servlet package cn.y ...
- java web 开发入门 --- tomcat/servlet/jsp
在做java web 开发时,要先安装tomcat.它是一个web服务器,也叫web容器,我们把写好的jsp, html页面放到它里面,然后启动它,就可以用浏览器访问这些页面,地址栏中输入localh ...
- 初学 Java Web 开发,从 Servlet 开发
1. 基本要求:Java 编程基础 有良好的 Java 语言编程基础,这是必须的,在讨论 Web 开发技术时提了一个 Java 编程基础的问题会被鄙视的. 2. 环境准备 (Eclipse + Tom ...
- Java Web开发 之JavaBean整理
JavaBean是一种Java组件技术,就其本质就是一个类,具有如下特点:1:实现可序列化2:有一个public的无参的构造方法3:所有实例变量都是private的4:为每一个属性提供getter和s ...
- java web系统中时间比sql server中的日期少2天的解决办法
系统环境 jdk:1.7 数据库:sql server 2008 问题描述 升级1.7之后查询出来的日期就比数据库中的少2天,降回1.6版本的jdk就正常了. 问题原因及解决办法 国内网站有很多不靠谱 ...
- 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener
[Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...
- Java Web开发之详解JSP
JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面.Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用, ...
- java web 开发三剑客 -------电子书
Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...
随机推荐
- ansible学习笔记二
Ad-Hoc命令: 所谓Ad-Hoc,简而言之是"临时命令",英文中作为形容词有"特别的,临时"的含义.Ad-Hoc只是官方对Ansible命令的一种称谓. 从 ...
- windows server 2012 配置多用户ftp服务器配置注意点
1.ftp根目录配置“FTP授权规则”为: 2.配置“FTP用户隔离”为: 3.配置“FTP目录浏览”为: 4.ftp虚拟目录“FTP授权规则”配置为:
- spring boot 与 spring cloud 关系
公司使用spring cloud,所以稍微了解一下 看了一下spring官网对 spring boot 以及 spring cloud 的解释 Spring Boot Spring Boot make ...
- ASP.NET MVC - 处理Html数据
HtmlAgilityPack 使用HtmlAgilityPack可以以面向对象的方式通过查找Html节点来获取页面元素.参考:http://html-agility-pack.net HtmlDoc ...
- 关于setInterval返回值问题
oBtn1.onclick = function(){ clearInterval(timer); timer = setInterval(cwidth,10); alert(timer); } oB ...
- linux系统 之 curl命令
1,curl命令 在Linux中curl是一个利用URL规则在命令行下工作的文件传输工具,可以说是一款很强大的http命令行工具.它支持文件的上传和下载,是综合传输工具,但按传统,习惯称url为下载工 ...
- pythonのSocket
TCP/IP 三次握手 第一次 A向B 发送 syn 请求 然后B给A返回 syn + ack A收到后,给B返回ack 握手成功. Socket 网络编程 实现通信 要通过IP+Port Socke ...
- python第七天,dict
在python里边创建字典的方法有如下几种: >>> dict1= dict(((),(),(),(),())) >>> print(dict1) {, , , , ...
- Mysql事务与JDBC事务管理
一.事务概述 1.什么是事务 一件事情有n个组成单元 要不这n个组成单元同时成功 要不n个单元就同时失败 就是将n个组成单元放到一个事务中 2.mysql的事务 默认的事务:一条sql语句就是一个事务 ...
- 安装mysql8.0.12以及修改密码和Navicat的连接
mysql8.0+与安装其他版本不同一.安装mysql8.0.121.到官网https://www.mysql.com/ 下载mysql-8.0.12-winx64.zip(不要.mis),直接解压 ...