日期:2018.12.9

博客期:026

星期日

  我知道对于每个人都需要对开发web进行了解,而我们常用的技术,也应该有所了解

  /*<------------------->*/知识点:

  1、JavaBean

  JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性,set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。

  2、Servlet

  Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。
  狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
  最早支持Servlet标准的是JavaSoft的Java Web Server,此后,一些其它的基于Java的Web服务器开始支持标准的Servlet。

  3、Sql Server

  SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。
Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft 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的更多相关文章

  1. SpringMVC内容略多 有用 熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器、过滤器等Web组件以及MVC架构模式进行Java Web项目开发的经验。

    熟悉基于JSP和Servlet的Java Web开发,对Servlet和JSP的工作原理和生命周期有深入了解,熟练的使用JSTL和EL编写无脚本动态页面,有使用监听器.过滤器等Web组件以及MVC架构 ...

  2. 【Java Web开发学习】Servlet、Filter、Listener

    [Java Web开发学习]Servlet 转发:https://www.cnblogs.com/yangchongxing/p/9274739.html 1.Servlet package cn.y ...

  3. java web 开发入门 --- tomcat/servlet/jsp

    在做java web 开发时,要先安装tomcat.它是一个web服务器,也叫web容器,我们把写好的jsp, html页面放到它里面,然后启动它,就可以用浏览器访问这些页面,地址栏中输入localh ...

  4. 初学 Java Web 开发,从 Servlet 开发

    1. 基本要求:Java 编程基础 有良好的 Java 语言编程基础,这是必须的,在讨论 Web 开发技术时提了一个 Java 编程基础的问题会被鄙视的. 2. 环境准备 (Eclipse + Tom ...

  5. Java Web开发 之JavaBean整理

    JavaBean是一种Java组件技术,就其本质就是一个类,具有如下特点:1:实现可序列化2:有一个public的无参的构造方法3:所有实例变量都是private的4:为每一个属性提供getter和s ...

  6. java web系统中时间比sql server中的日期少2天的解决办法

    系统环境 jdk:1.7 数据库:sql server 2008 问题描述 升级1.7之后查询出来的日期就比数据库中的少2天,降回1.6版本的jdk就正常了. 问题原因及解决办法 国内网站有很多不靠谱 ...

  7. 【Java Web开发学习】Spring MVC添加自定义Servlet、Filter、Listener

    [Java Web开发学习]Spring MVC添加自定义Servlet.Filter.Listener 转载:https://www.cnblogs.com/yangchongxing/p/9968 ...

  8. Java Web开发之详解JSP

    JSP作为Java Web开发中比较重要的技术,一般当作视图(View)的技术所使用,即用来展现页面.Servlet由于其本身不适合作为表现层技术,所以一般被当作控制器(Controller)所使用, ...

  9. java web 开发三剑客 -------电子书

    Internet,人们通常称为因特网,是当今世界上覆盖面最大和应用最广泛的网络.根据英语构词法,Internet是Inter + net,Inter-作为前缀在英语中表示“在一起,交互”,由此可知In ...

随机推荐

  1. css控制继承

    inherit:继承父类. initial:继承浏览器. unset:重置为自然值,继承父类或者浏览器. revert:恢复原来的值. 详解: CSS为处理继承提供了四种特殊的通用属性值: inher ...

  2. Ant使用指南

    ant 使用指南  参考:http://www.cnblogs.com/hoojo/archive/2013/06/14/java_ant_project_target_task_run.html 一 ...

  3. Liunx/RHEL6.5 Oracle11 安装记录

    1.创建用户组 groupadd oinstall #创建用户组oinstall groupadd dba #创建用户组dba useradd -g oinstall -g dba -m oracle ...

  4. 单片机AT和STC区别

    http://www.21ic.com/jichuzhishi/datasheet/AT89C51/data/192017.html

  5. 【mmall】Jackson序列化时isSuccess()方法的注意点

    参考链接:遭遇fastjson的一个坑

  6. MySql cmd下的学习笔记 —— 有关表的操作(对表中数据的增,删,改,查)

    (知识回顾) 连接数据库 mysql -uroot -p111 先建立一个新库 create database test1; use test1; 由于今天的主要内容是表的操作,建立表的详细过程不是本 ...

  7. Spring boot+Thymeleaf+easyui集成:js创建组件页面报错

    开发工具:Ideal 使用场景:Demo 前提:       环境:Spring boot +Thymeleaf+easyui 引入thymeleaf模板引擎 <html lang=" ...

  8. shell编程 之 函数

    1 函数基本格式 个人认为,编程中的函数基本上有3种,第一种是糖葫芦函数,一根棒棒串起来,执行一次就是走个过场,吃完了糖葫芦就没别的事了,第一种基本就是这样的: 它没有参数,没有返回值. demoFu ...

  9. [转] 解决Driver/library version mismatch

    跑模型 torch.cuda.is_available()返回 False nvidia-smi返回:Failed to initialize NVML: Driver/library version ...

  10. Jquery的一些常见用法

    谨以此文怀念我们大学的时光,Jquery3.4.0下载 https://code.jquery.com/jquery-3.4.0.min.js ⒈常用方法 $("#div1").h ...