第一章 javaweb的概述
web的架构
web网站主要由两种架构:
C/S架构:client/server :客户端和服务端,比如:qq、微信、腾讯视频客户端等
B/S架构:browser/server:浏览器和服务端,比如:谷歌浏览器、百度浏览器、qq浏览器等,常用于互联网的网站操作。
web相关的知识点
URL:uniform resource locator:统一资源定位器,用来确定资源的路径,方便在服务器进行请求和响应。
比如:http://www.baidu.com:8080/webproject/index
应用层协议://域名或者IP地址:端口号/项目名称/文件名称
HTTP:超文本传输协议:hypertext transfer protocol :是超文本文档比如html的传输的规范,(HTTPS表示更加安全的协议)
动态网站的请求过程:
网站请求方式:
GET请求:多用于页面内容展示,比如首页的商品展示
POST请求:用于含有表单操作的请求方式,比如登录、注册、搜索框等
web的相关技术
常见的java web开发技术栈:
前端三剑客:html5、css、JavaScript
前端框架:vue、react、bootstrap、element ui
后端编程基础语言:Java基础、Java OOP
后端技术框架:spring、springmvc、springboot
后端技术:jsp、servlet
开发环境:jdk8或者以上、tomcat容器
开发工具:idea2019等以上即可、eclipse
数据库:MySQL、mybatis
web开发环境搭建
(1)tomcat容器下载:https://tomcat.apache.org/
解压使用即可。
tomcat默认的端口号:8080
(2)jdk安装
(3)idea安装
使用idea创建web项目
作业1:创建一个web项目,在index.jsp网页中创建如图所示的登录效果,并启动项目,在浏览器中查看结果。其中页面css样式尽量保持一致。
第二章 JSP简介
1、jsp的概念
JSP:java server page,是java动态网站的关键技术,能够实现使用jsp网页来编译执行成静态的html网页。主要组成部分:html+java的动态脚本。
2、jsp的常用标识
常用的标识:指令标识、脚本标识、注释标识
2.1指令标识
指令标识:主要用来对jsp网页页面进行相关的设置,不会对html的内容做影响。基本语法:
常用的三个指令:
page
taglib
该页面中所使用的标签库,同时引用标签库,并指定标签前缀,在页面中引用标签库后,就可以通过前缀引用标签
include
2.2 声明标识
jsp中用来声明全局变量和方法的标识基本语法如下:
注意:%和!之间不能空格。变量或者方法代码和java代码一致
举例:
2.3表达式标识
表达式主要用于内容的输出,会自动转换成字符串,在jsp中运用非常广泛,基本语法
2.4 脚本标识
用于jsp页面编写java代码的脚本段落标识。基本的语法
2.5注释标识
作业1:完成书18页例2-1。
作业2:完成如图所示的页面展示,使用jsp中的代码段标识来操作
作业3:完成如图所示的效果图,使用jsp项目中的基本语法
思考题:
考虑使用list集合来放置人物 :张三、李四、王五、周六,并使用for循环的方式,结合html中的无序列表进行展示。
3 jsp的动作标记
jsp的动作标记是客户端执行时运行,用来处理和使用JavaBean(java实例),方便编写Java脚本代码,从而实现Java对象的操作。
java面向对象编程三大特性:封装、继承、多态
封装:java实例中设置私有的属性和共有的getter和setter方法。
3.1 jsp:useBean动作标记
用来创建JavaBean实例,方便在一定范围内设置和实例化对象。和封装一起使用。
基本语法:
<jsp:useBean id=”实例名称” class=”类名“ scope=”该实例创建后使用范围“>
示例:创建一个student类,其中对姓名、性别、年龄、电话进行封装,同时创建chapter01.jsp进行对象的实例化并赋值。页面输出对应的姓名以及性别等信息。
显示效果
3.2 <jsp:forward> 动作标记
该标记主要用于对请求的转发,用户将请求重新转发到下一个jsp页面进行执行。
基本语法:
<jsp:forward page=”跳转的URL”/>
3.3 <jsp:include>动作标记
表示包含其他的jsp等的动作标记,是客户端请求时执行的动作,主要用于插入页面的具有重用强的部分结构。比如顶部的导航栏、底部的版权等。
基本语法:
<jsp:include page=”被包含的URL” flush=”true”>
作业练习1:
创建一个person类,属性有:姓名name、性别gender、家庭住址addr、电话号码tel、email。
使用useBean在chapter01.jsp中创建实例,基本信息为:李纯粉、男性、重庆市涪陵、152523232、10232108@qq.com。显示的内容
作业练习2:
模拟注册,创建一个register.html网页,同时创建一个register.jsp网页,当用户在register.html注册后,将注册的信息显示在register.jsp中。注意:创建user类,属性为名字、密码、年龄
第三章 JSP内置对象
1、jsp内置对象的简介
jsp有9个内置对象,这9个内置对象都是用来做网页开发时候配置相关的代码和获取相关数据,内置对象不需要开发人员创建和声明。是jsp自带的,直接使用即可。主要有:request、response、session、out、application等,如下表
- request对象
request对象表示处理请求的对象,主要用于获取客户端使用表单输入的数据,比如登录、注册、添加、搜索等使用场景。
举例:创建一个登录页面login.jsp,包含用户名和密码,提交数据到toLogin.jsp中处理数据,并展示用户名和密码。
登录界面login.jsp
登录成功后同toLogin.jsp
- out对象
out对象在jsp中用来对页面进行数据的输出,可以输出纯文本,也可以输出html标记文本。
常用的方法:out.print()
- response对象
response对象表示服务器端的响应对象,比如获取响应状态码,响应重定向等功能。
响应重定向:表示将请求的url重新定位到新的地址进行响应,此时浏览器的地址栏会发生更新。
响应重定向的基本语法:
response.sendRedirect(目标URL)
作业练习:创建一个登录页面login.jsp,包含用户名和密码,提交数据到toLogin.jsp中处理数据,并展示用户名和密码。当用户名不是admin或者密码不是123456的时候重新回到登录界面进行登录,如果都符合条件直接跳转到首页,显示首页的内容。
- session对象
session表示会话对象,表示客户端和服务端之间每一次请求都会产生一个会话,直到应用结束。主要的使用方法就是将数据信息保存在session中用来传递数据。
session的主要方法如下:
session.setAttribute(名称,值)
session.getAttribute(名称)
综合练习项目:
创建一个登录页面login.jsp,包含用户名和密码,性别,提交数据到login.jsp中处理数据。当用户名不是admin或者密码不是123456的时候重新回到登录界面进行登录,如果都符合条件直接跳转到首页,并显示“欢迎用户xxx先生,你的密码为xxxx”内容。
需要用到request、out、session,请求转发和响应重定向。
1.4 application对象
application对象是指代应用程序对象,可以用来存储用户信息,但是生命周期和session比较更长,常用方法和session一致。application的生命周期指应用在服务器启动到服务器关闭应用为止。session指浏览器在使用时存储的对象,每一个请求自动创建一个session对象,session对象的生命周期可以指定,一般浏览器打开,到浏览器关闭。
application对象的常用方法:
application.setAttribute(“自己起的变量名称”,所要保存的值)
application.getAttribute(“自己起的变量名称”):说明自己起的名称要和setAttribute的名字保存一致。
1.5 pageContext对象
该对象是表示页面上下文的对象,主要用于获取其他作用域对象比如:request、response、session、application对象,它的作用域范围是最小的。常用的方法
pageContext.setAttribute()
pageContext.getAttribute()
pageContext.getRequest()à获取request对象
pageContext.getResponse()à获取response对象
pageContext.getSession()à获取session对象
pageContext.getServletContext()à获取application对象
作业:
模拟登录,创建一个login.jsp的网页用来进行登录,其中包含用户名、密码、性别选择,如果用户名为admin,并且密码为123456,则表示登录成功,跳转到首页index.jsp,同时显示用户名和性别信息,比如xxx先生\女士,否则重新回到登录页面再次登录
思路:需要使用到session对象将用户名和性别存储起来,在不同的网页中使用
步骤1:创建login.jsp,并在网页中添加登录所需的表单,其中包含用户名和密码以及性别单选按钮等超级文本内容,同时格式可以参考之前将其放在表格中。
步骤2:表单提交的method为post、action=”login.jsp”,在当前的页面中进行处理
步骤3:处理请求之前需要获取用户名、密码、性别,使用request的对应方法获取值。初始判断用户名是否为空。
步骤4:接步骤3的数据,再判断用户名是否为admin,密码为123456,如果符合条件,跳转到首页index.jsp,并使用session对象将用户名保存到session中。如果不符合条件,使用response的重定向方法。response.sendredirect(“login.jsp”)。
步骤5:在首页index.jsp中,使用session的获取值的方法将用户名获取出来,并显示在首页中,网页内容为“欢迎xxx登录”。
额外:在login.jsp中创建超链接用于注册网页register.jsp的跳转。注册用户名和密码,以及确认密码。注册成功跳转到登录页面login.jsp中。
注意在login.jsp处理请求数据的时候,需要加上中文乱码处理的代码。放在输入中文时出现乱码的情况
第四章 JDBC与Java web
1、JDBC概述
JDBC:Java database connectivity Java连接数据库的技术和相关接口。主要支持对关系型数据库的连接,比如:MySQL、Oracle、SQL server等数据库。课堂使用MySQL数据库操作。
2、MySQL数据库的安装
下载官网:
MySQL :: Download MySQL Installer (Archived Versions)
下载jdbc的驱动包
MySQL :: Download MySQL Connector/J (Archived Versions)
作业练习:将数据库yootk中的表emp中的员工信息使用jdbc查询显示到index.jsp.
其中需要完成:DBHelper类,
创建Javabean实例类:Emp
在index.jsp中调用相关类并展示效果
条件查询的语法规则:
select 列名 from 表名 where 条件列 比较运算符 值
对应的运算符:书中71页表4-2
作业练习:
在查询所有的员工信息基础上,加上详情的超链接,点击超链接进入到detailinfo.jsp的详情页显示当前的员工信息。通过eid查询每一个员工的详情信息
2、JDBC的几大对象
- ResultSet对象
结果集合,保存的是以数据库中表的列的形式的对象。将每一行的数据保存为一个对象。表中有多少行数据,就保存多少数据在ResultSet结果集中。
主要用在查询数据库中表的数据时候使用。
方法 | |
next() | 返回值true或者false,用于while循环的条件,表示判断resultSet结果集合中是否还有对象。 |
getString(“表的列名”) | 表示获取对应列名的值,其中值的数据类型为String类型,对应表中的varchar |
getDouble (“表的列名”) | 表示获取对应列名的值,其中值的数据类型为Double类型,表中的double或decimal |
getInt (“表的列名”) | 表示获取对应列名的值,其中值的数据类型为Int类型,对应表中的int类型 |
String sql=“select * from 表名”
PreparedStatement pstm=conn. preparedStatement(sql)
ResultSet rs= pstm.executeQuery(sql)
while(rs.next()){
}
注意:如果有条件查询只需要将sql语句修改即可
- PreparedStatement
继承了Statement接口,提高了sql语句的执行效率,实际开发中都使用该接口完成数据库中表数据的增删改查。
方法 | |
executeQuery() | 用于查询数据库表数据的方法,返回值为ResultSet |
executeUpdate() | 返回值为int类型的数字。表示执行sql过后表受影响的行数,所以用于表数据的增加、删除、更新的判定。 |
setString(int x, String value) | 表示在x的参数位置,放置的值为value的值。其中x的位置要和“?”的占位位置来确定 增加、删除、更新 |
setInt(int x,int value) | 增加、删除、更新 |
setDouble(int x,double value) | 增加、删除、更新 |
作业练习:
完善员工信息的添加功能
第五章 JavaBean技术简介
1、JavaBean的作用
JavaBean使用java编写的一个组件,能够提高代码的开发效率,降低开发的重复代码的编写,提高开发简洁程度和安全性。javabean本质就是通过public修饰的class类来声明。
2、编写标准和规范
要求:
- 声明私有的属性,private
- 使用公有的getter和setter方法来获取属性值和赋值,public
- 使用相同的包package存放对应的JavaBean
- 类名首字母大写
- 变量首字母小写,并使用驼峰式命名,第二单词起首字母大写和方法名称的命名规则一致。
第六章 Servlet技术基础
1、Servlet的含义
Servlet本质是一个继承了HttpServlet的类,主要用于对客户端到服务端请求和响应的处理。是Java Web开发中的重要中间组件。如下图所示:在Java web程序中 Servlet容器中有多个不同功能的servlet负责处理对应的功能。
2、Servlet的生命周期
Servlet主要由以下几个部分组成:
- 加载Servlet容器,并创建一个Servlet对象(实例化过程)
- Servlet初始化值的过程
- 请求和响应处理的过程(重点----开发中的唯一需要掌握的)
- 销毁阶段:Servlet容器资源删除的过程。
Servlet初始化值的方法:
init(),主要用于对servlet的相关配置进行初始化操作,该方法只能被调用一次。
Servlet请求处理的方法:
如果是get请求service()方法内调用doGet()方法实现请求处理。
get请求:通俗讲:网址中带有的请求参数和值的请求为get请求。
(查询所有数据、条件查询、分页查询)
如果是post请求service()方法内调用doPost()方法实现请求处理
主要围绕form表为主的请求方式:登录、注册功能以及范式涉及到后台数据的交互都可以使用post请求和方法
通用的写法:直接在doGet()方法中调用doPost()方法,将请求直接写在doPost方法中
3、常用的Servlet的接口和方法
HttpServletResponse常用的方法:
其中getParameter用于获取form表单中的name参数值
setCharacterEncoding(): 设置请求的编码集,固定写法
setAttribute:设置当前请求对象中存值的一个过程:可以用来对请求范围内的值传递
比如登录过程中的传值。
getAttribute:获取对应请求范围内的属性值
getContextPath:该方法返回值为项目的url入口路径。比如项目名为info。得到的结果为/info
getCookies获取请求中的所有cookie,cookie用于保存对应的信息,是一个数组
HttpServletResponse接口常用的方法
setCharacterEncoding:设置响应的字符编码集
setContentType:设置响应正文的MIME类型
sendRedirest: 响应重定向的方法,响应重定向不会将请求对象重新定向到其他页面中
getWriter():输出正文数据的方法。用于serlvet输出的PrintWriter对象调用。
4、Servlet的映射配置
servlet映射配置有两种
第一种是在Servlet类上面添加@WebServlet的注解
从而实现对当前类的url设置,其中/必须要写上
第二种方法:在web.xml中配置对应的servlet映射关系
作业练习:模拟登录完成表单中的用户名和密码的验证,用户名模拟为:admin,密码为:123456。当验证成功后,进入到admin.jsp页面中,并在当前页面显示欢迎xxx进入。如果登录失败重新等录。
步骤一:在包com.dsj.servlet下建一个名为LoginServlet的类,继承HttpServlet,同时配置好url映射为”/login”
步骤二:创建一个login.jsp的页面,在页面中创建登录的表单信息,其中action=”/login”
步骤三:在loginServlet的dopost方法中校验用户名和密码。并使用请求对象的setAttribute的方法将用户名保存在其中。
步骤四:在admin.jsp中显示用户信息
总结:
Javabean+servlet+jsp的开发技巧和流程:
- 创建对应的所有的jsp页面和所有的servlet类。
- 在servlet类上面添加注解@WebServlet(“/url映射地址”)
- 如果有form表单的创建,需要在action=” ${pageContext.request.contextPath}/添加servlet对应的映射名称”
- 在servlet类的doPost方法中处理表单提交的post请求参数值,并根据实际的业务逻辑来处理值。
JavaBean+servlet+jsp的项目结构三层:
如图