第一大步骤:软件安装教程;
1.eclipse安装
https://www.cnblogs.com/ForestDeer/p/6647402.html
2.tomcat安装
https://blog.csdn.net/u014543872/article/details/79568712
3.数据库安装
http://www.cnblogs.com/sshoub/p/4321640.html
4.Sqlyang破解版下载
http://www.onlinedown.net/soft/24926.htm
第二大步骤:
1.如何利用eclipse创建一个java web项目?
https://blog.csdn.net/qq_25646191/article/details/78776136
2.根据教程实现一个完整的javaweb项目
https://www.cnblogs.com/optblogs/p/7880996.html
3.javaweb学习路线
https://www.cnblogs.com/aishangJava/p/5970576.html
https://blog.csdn.net/yl1712725180/article/details/79329865
第三步骤:我最近的学习感受+一个程序详解+知识点
模块一:
I.简介JavaWEB程序
JavaWeb项目就是一个应用程序,你不要以为它有多么神秘。你每天打开的QQ就一个应用程序,你在手机上打开的微信,百度地图等等,这些都是应用程序。
不同的是,QQ是一个本地客户端程序,它需要你在自己的电脑上安装一个客户端,然后你打开QQ,可以登录,聊天。
QQ肯定也分客户端和服务端,我们电脑上装的就是客户端,你要知道的一点是,我们发送消息,发送到哪里去了呢?
没错,肯定是发送到QQ的服务器上了,那里保存着我们的所有数据。
想想也不可能在本地,因为我们在电脑上发送的消息,在手机QQ上不是也能看到吗?这就说明,肯定是上传到它的服务器然后保存下来了。
而Web项目是什么呢?
它也是一个应用程序,只不过它的客户端是运行在浏览器上的。
我们打开浏览器,访问一个地址,比如 http://www.jianshu.com/
这个就是我们的访问路径,我们通过这个URL向简书的服务器提交请求,然后服务器进行处理,给你回应。
接下来,我们就看到出来一个网页。
我们在这个网页上可以写文章,点赞,收藏,等等。
我们的每一步操作,其实都和服务器做了一个交互。
比如一个登录功能,当我们鼠标点击那个登录按钮,浏览器就向服务器提交了一个请求,服务器进行处理,然后操作数据库。最终,它会得出一个结果,就是说,到底能不能让你登录,总会有个说法。
如果你密码写错了,它可能就会得出一个用户名或密码错误的结论。然后,这个信息会从服务器返回到前台,前台就是浏览器。
所谓的前台就是你的浏览器,没什么神秘的。
前台接受到后台传过来的信息后,进行一些处理,然后给你个提示,比如,告诉你用户名或密码错误。
这就是一个完整的交互过程。
现在随着网速越来越好,浏览器的性能越来越强大,我想web肯定是未来的大趋势。毕竟,谁都不希望在电脑上安装一大堆客户端吧。
只用一个浏览器多好。
有了web,我只需要有一个浏览器,然后就能通过互联网获取我想要的资源了。这样不是很美妙吗?
II.不建议一开始就看视频,先把那些基础理论知识过一次,心里有点踏实了,到了需要敲大量代码的阶段再看视频。
模块二:抬头看路
Javaweb学习总结
http://www.cnblogs.com/xdp-gacl/p/3729033.html
Java Web项目开发到底需要掌握哪些技术?
https://blog.csdn.net/javaniuniu/article/details/51880901
零基础如何系统学习Java Web?
https://www.zhihu.com/question/31151832
模块三:知识点
javaweb制作流程的形象理解
1.有关数据库的知识点:
【MYSQL的概述】
- 什么是数据库:
数据库就是一个文件系统,需要通过标准SQL语句才能访问.
【MYSQL的安装和卸载】
安装和卸载的过程记录下服务器安装的路径和数据文件存放的路径.卸载的时候将这个两个路径下的文件一并都删除掉.
【创建数据库】
语法:
* create database 数据库名;
【查看数据库】
* 查看数据库服务器中的所有的数据库:show databases;
【删除数据库】
* drop database 数据库名称;
【修改数据库】
* alter database 数据库名
【其他的数据库操作命令】
* 切换数据库:use 数据库名;
* 查看正在使用的数据库:select database();
【创建表】
create table 表名(
字段名 类型(长度) 约束,
字段名 类型(长度) 约束
);
单表约束:
* 主键约束:primary key
* 唯一约束:unique
* 非空约束:not null
创建一个分类表:
分类ID int类型主键 自动增长
分类名称 字符串类型 长度20
create table category(
cid int primary key auto_increment,
cname varchar(20)
);
***** 注意:建表之前一定先选择数据库.
【查看表】
查看数据库中的所有表:show tables;
查看表结构:desc 表名;
【删除表】
drop table 表名;
【修改表】
alter table 表名 add 列名 类型(长度) 约束; --修改表添加列.
alter table 表名 modify 列名 类型(长度) 约束; --修改表修改列的类型长度及约束.
alter table 表名 change 旧列名 新列名 类型(长度) 约束; --修改表修改列名.
alter table 表名 drop 列名; --修改表删除列.
rename table 表名 to 新表名; --修改表名
【插入记录】
语法:
* insert into 表 (列名1,列名2,列名3..) values (值1,值2,值3..); -- 向表中插入某些列
* insert into 表 values (值1,值2,值3..); --向表中插入所有列
【修改记录】
语法:
* update 表名 set 字段名=值,字段名=值 [where 条件];
【删除记录】
语法:
* delete from 表名 [where 条件];
【查询记录】
语法:
* select [distinct]*[列名,列名] from 表 [where 条件].
创建商品表:
创建商品表:
create table products(
pid int primary key auto_increment,
pname varchar(20),
price double,
pnum int,
cno int,
pdate timestamp
);
【多表查询】
- 交叉连接查询(基本不会使用-得到的是两个表的乘积)
语法:
* select * from A,B;
2.有关前端页面的知识点:
【HTML的概述】
- 什么是HTML
HTML:Hyper Text Markup Language 超文本标记语言
l 超文本:比文本功能更加强大
l 标记语言:通过一组标签对内容进行描述的一门语言
- 为什么学习HTML
HTML是设计页面基础
- 在哪些地方可以使用HTML
设计页面的时候都可以使用HTML
- 如何使用HTML
HTML的语法和规范
l HTML文件的扩展名是.html或者是.htm
l HTML文件是由头和体组成
l HTML这组标签是不区分大小写
l HTML的标记通常是由开始标签和结束标签组成:<b>内容</b> <br/>
【HTML的字体标签】
<font>标签
<font 属性名=”属性值”>文字</font>
l size:控制字体大小.最小1 最大7
l color:控制字体颜色. 使用英文设置 ,使用16进制数设置
l face:控制字体.
【HTML的排版标签】
<hn>标题标签
<h1>b标题</h1>
<p>段落标签
<p>一段文字</p>
<br/>换行标签
<br/>代表换行
<hr/>水平线标签
<b>字体加粗
<b>文字</b>
<i>斜体标签
<i>斜体</i>
【HTML的图片标记】
<img />
l src:图片的路径
l width:图片宽度
l height:图片的高度
l alt:图片提示
图片路径:
l 分成相对路径和绝对路径
l 相对路径:
n ./ :代表当前路径
n ../ :代表上一级路径
【超链接标签】
<a>超链接</a>
l href:超链接跳转的路径
l target:打开方式
n _self:在自身页面打开
n _blank:打开一个新窗口
表格的属性:
l border :表格边框
l width :表格宽度
l height :表格高度
l align :水平方向对齐方式 left center right
l bgcolor :背景色
3.使用JDBC完成对于分类的CRUD的操作
【JDBC的回顾】
- JDBC的概念:
JDBC:Java Data Base Connectivity.
- 驱动:
- JDBC的开发步骤:
步骤一:注册驱动.
步骤二:获得连接.
步骤三:创建执行SQL语句对象.
步骤四:释放资源.
- JDBC的API的详解:
DriverManager:
* 注册驱动:
* 获得连接:
Connection:
* 获得执行SQL语句对象.
* Statement createStatement();
* PreparedStatement prepareStatement(String sql);
* CallableStatement prepareCall(String sql);
* 进行事务管理:
* setAutoCommit(boolean flag);
* commit();
* rollback();
Statement:
* 执行SQL语句:
* int executeUpate(String sql); --执行insert update delete语句.
* ResultSet executeQuery(String sql); --执行select语句.
* boolean execute(String sql); --执行select返回true 执行其他的语句返回false.
ResultSet:
* 遍历结果集:next();
* 获得结果集中的数据.getXXX(int c); getXXX(String name);
1 package com.itheima.jdbc.utils; 2 3 import java.io.FileInputStream; 4 import java.io.FileNotFoundException; 5 import java.io.IOException; 6 import java.sql.Connection; 7 import java.sql.DriverManager; 8 import java.sql.ResultSet; 9 import java.sql.SQLException; 10 import java.sql.Statement; 11 import java.util.Properties; 12 13 /** 14 * JDBC的工具类 15 * @author apple 16 * 17 */ 18 public class JDBCUtils { 19 public static final String DRIVERCLASS; 20 public static final String URL; 21 public static final String USERNAME; 22 public static final String PASSWORD; 23 24 static{ 25 // 获得属性文件中的数据. 26 Properties properties = new Properties(); 27 try { 28 properties.load(new FileInputStream("src/db.properties")); 29 } catch (FileNotFoundException e) { 30 e.printStackTrace(); 31 } catch (IOException e) { 32 e.printStackTrace(); 33 } 34 35 DRIVERCLASS = properties.getProperty("jdbc.driverClass"); 36 URL = properties.getProperty("jdbc.url"); 37 USERNAME = properties.getProperty("jdbc.username"); 38 PASSWORD = properties.getProperty("jdbc.password"); 39 } 40 41 // 加载驱动: 42 public static void loadDriver(){ 43 try { 44 Class.forName(DRIVERCLASS); 45 } catch (ClassNotFoundException e) { 46 // TODO Auto-generated catch block 47 e.printStackTrace(); 48 } 49 } 50 51 // 获得连接: 52 public static Connection getConnection(){ 53 loadDriver(); 54 Connection conn = null; 55 try { 56 conn = DriverManager.getConnection(URL, USERNAME, PASSWORD); 57 } catch (SQLException e) { 58 // TODO Auto-generated catch block 59 e.printStackTrace(); 60 } 61 return conn; 62 } 63 64 // 释放资源: 65 public static void release(Statement stmt,Connection conn){ 66 if(stmt != null){ 67 try { 68 stmt.close(); 69 } catch (SQLException e) { 70 // TODO Auto-generated catch block 71 e.printStackTrace(); 72 } 73 stmt = null; 74 } 75 76 if(conn != null){ 77 try { 78 conn.close(); 79 } catch (SQLException e) { 80 e.printStackTrace(); 81 } 82 conn = null; 83 } 84 } 85 86 public static void release(ResultSet rs,Statement stmt,Connection conn){ 87 if(rs!= null){ 88 try { 89 rs.close(); 90 } catch (SQLException e) { 91 e.printStackTrace(); 92 } 93 rs = null; 94 } 95 if(stmt != null){ 96 try { 97 stmt.close(); 98 } catch (SQLException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 102 stmt = null; 103 } 104 105 if(conn != null){ 106 try { 107 conn.close(); 108 } catch (SQLException e) { 109 e.printStackTrace(); 110 } 111 conn = null; 112 } 113 } 114 }
4. 什么是XML
XML全称为Extensible Markup Language,意思是可扩展的标记语言。XML语法上和HTML比较相似,但HTML中的元素是固定的,而XML的标签是可以由用户自定义的。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.5"> 3 <servlet> 4 <servlet-name>HelloMyServlet</servlet-name> 5 <servlet-class>cn.itcast.HelloMyServlet</servlet-class> 6 </servlet> 7 <servlet-mapping> 8 <servlet-name>HelloMyServlet</servlet-name> 9 <url-pattern>/hello</url-pattern> 10 </servlet-mapping> 11 </web-app>
1 <?xml version="1.0" encoding="UTF-8"?> 2 <persons> 3 <person id="p001"> 4 <name>张三</name> 5 </person> 6 <person id="p002"> 7 <name>李四</name> 8 </person> 9 </persons>
1.1.1.1 XML 语法
l XML文档声明
<?xml version="1.0" encoding="UTF-8"?>
- 文档声明必须为<?xml开头,以?>结束;
- 文档声明必须从文档的0行0列位置开始;
- 文档声明只有三个属性:
a) versioin:指定XML文档版本。必须属性,因为我们不会选择1.1,只会选择1.0;
b) encoding:指定当前文档的编码。可选属性,默认值是utf-8;
c) standalone:指定文档独立性。可选属性,默认值为yes,表示当前文档是独立文档。如果为no表示当前文档不是独立的文档,会依赖外部文件。
l 元素
<servlet>
- 元素是XML文档中最重要的组成部分,
- 普通元素的结构开始标签、元素体、结束标签组成。例如:<hello>大家好</hello>
- 元素体:元素体可以是元素,也可以是文本,例如:<b><a>你好</a></b>
- 空元素:空元素只有开始标签,而没有结束标签,但元素必须自己闭合,例如:<c/>
- 元素命名:
a) 区分大小写
b) 不能使用空格,不能使用冒号:
c) 不建议以XML、xml、Xml开头
- 良好的XML文档,必须有一个根元素。
l 属性
<web-app version="2.5">
- 属性是元素的一部分,它必须出现在元素的开始标签中
- 属性的定义格式:属性名=属性值,其中属性值必须使用单引或双引
- 一个元素可以有0~N个属性,但一个元素中不能出现同名属性
- 属性名不能使用空格、冒号等特殊字符,且必须以字母开头
l 注释
XML的注释与HTML相同,即以“<!--”开始,以“-->”结束。注释内容会被XML解析器忽略!
l 转义字符
XML中的转义字符与HTML一样。
因为很多符号已经被XML文档结构所使用,所以在元素体或属性值中想使用这些符号就必须使用转义字符,例如:“<”、“>”、“’”、“””、“&”。
5.Servlet
【Servlet的概述】
- 什么是Servlet:
是运行在服务器端的一小的Java程序,接收和响应从客户端发送请求.
- Servlet的作用:
处理客户端的请求,并且对请求作出响应.
- 使用Servlet:
Servlet的入门:
* 编写一个类实现Servlet接口.
public class ServletDemo1 implements Servlet{
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
// System.out.println("");
response.getWriter().println("Hello Servlet...");
}
...
}
* 配置Servlet到WEB服务器.
<!-- 配置Servlet -->
<servlet>
<!-- Servlet的名称 -->
<servlet-name>aaa</servlet-name>
<!-- Servlet的类的全路径 -->
<servlet-class>com.itheima.servlet.demo1.ServletDemo1</servlet-class>
</servlet>
<!-- 配置Servlet的映射 -->
<servlet-mapping>
<!-- Servlet的名称 -->
<servlet-name>aaa</servlet-name>
<!-- Servlet的访问路径 -->
<url-pattern>/servletDemo1</url-pattern>
</servlet-mapping>