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 ...
随机推荐
- LOJ #6261 一个人的高三楼
生成函数和组合数学的灵活应用 LOJ #6261 题意:求一个数列的$ k$次前缀和 $ Solution:$ 我们对原数列$ a$建生成函数$ A=\sum\limits_{i=0}^{n-1} a ...
- 允许长单词、数字、URL换行到下一行
CSS3 word-wrap 属性 normal 只在允许的断字点换行(浏览器保持默认处理) break-word 在长单词.数字.URL地址内部进行换行 页面效果图: 源码:
- Serializable 和Parcelable 的区别
1.作用 Serializable的作用是为了保存对象的属性到本地文件.数据库.网络流.RMI(Remote Method Invocation)以方便数据传输,当然这种传输可以是程序内的也可以是两个 ...
- Spring重温(一)--Spring快速入门
1.spring官网(https://repo.spring.io)下载依赖jar. 2.配置spring环境时还需要commons-logging相关jar. 3.打开eclise创建一个工程,并将 ...
- 错误整理:No plugin found for prefix 'jetty' in the current project and in the plugin groups
在maven进行jetty的调试中出现错误: [ERROR] No plugin found for prefix 'jetty' in the current project and in the ...
- Vue对变量的监控
Vue对变量的监控 watch: { a(val, oldVal) {//普通的watch监听 if (val == "1") { $('#myModal').modal(); } ...
- Python换行符问题:\r\n还是\n?
今天写一个Python脚本去读取一个txt文件时,发现一个很有趣的现象: 如果这个文件是用atom编辑器写的,发现换行符是'\r'.这样一来去逐行读取数据就失效了,因为用open函数 去打开该文件re ...
- NandFlash和iNand【转】
转自:https://www.cnblogs.com/PengfeiSong/p/6380447.html nand 1.nand的单元组织:block与page(大页Nand与小页Nand)(1)N ...
- Saltstack自动化操作记录(1)-环境部署
早期运维工作中用过稍微复杂的Puppet,下面介绍下更为简单实用的Saltstack自动化运维的使用. Saltstack知多少Saltstack是一种全新的基础设施管理方式,是一个服务器基础架构集中 ...
- vue2+axios在不同的环境打包不同的接口地址
node.js的环境变量 process process 对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程.作为一个对象,它对于 Node.js 应用程序始终是可用 ...