java web学习笔记
一、Java Web简介
web: 前端的一些内容,在浏览器中展示的内容,html + css + js
Java Web: 使用Java语言来编写前端页面 ;
jsp属于Java ,所以学习jsp实际上就是学习Java的一个类/接口 Servlet
jsp 全名称:java server page Java服务器页面 ( 动态资源页面)
静态资源页面
当这个页面写完之后,内容就固定死了,不管在何时何地打开,页面展示的内容都是一样的;页面中的数据是死的;
**动态资源页面 **
页面中的数据会变化,写完之后,在不同时间、不同条件下,打开页面展示的内容可能会不一样;页面中的数据不是死的;
将html原本内容和从数据库中查询出来的内容重新合并组成一个新的html页面,来进行展示。
二、认识Servlet
JavaWeb程序 --> 将一个请求路径( 网络地址 ) 变成一条sql语句,发送给数据库进行查询;
1、什么是Servlet?
什么是Servlet? JavaWeb的三大组件 ( Servlet Filter过滤器 Listener监听器 )
小服务,小组件,
主要作用:
接收用户发来的请求( 路径及数据 ),给用户响应对应内容( 页面 );
2、请求路径
一般来讲,请求路径指的是 网络访问路径 (不带盘符,基本格式为:协议://ip地址:端口号/路径 )
网络路径:
http://192.168.15.52:8080/web01/hello.html
http://220.181.38.149:80 --> 百度首页 www.baidu.com (域名商)
本机路径:带盘符的路径
D:\工作\apache\apache-tomcat-8.5.57
将一个本地路径,变成网络路径
需要使用到服务器:tomcat服务器服务 服务器机器
3、tomcat
tomcat的安装,百度搜索tomcat,去官网下载core中的zip格式,解压版
解压之后的tomcat分布:
bin:放置的都是可执行文件,包含启动执行文件startup.bat( 如果点击之后,出现闪退的情况,说明jdk的环境变量java_home没有配置好 )、
关闭执行文件shutdown.bat;
conf:放的都是tomcat的配置文件,tomcat的端口号、编码格式、服务配置、支持的文件配置;server.xml web.xml
lib:tomcat也是Java编写的,在执行的时候,同样需要Java jar包的支持,都存放在这;编写servlet时需要的jar包
logs:日志记录文件夹,在使用tomcat过程,出现问题,或者没有问题是,形成的日志文档,都在这个文件夹中;
temp:临时文件,可以删除,但每次执行时都会自动创建
webapps:tomcat实际执行过程中,所访问的文件地址,所有的页面文件都保存在这个文件夹中;ROOT表示没有项目名
work:在执行tomcat时,程序中如果有jsp文件,会在这个文件夹中转换成.java文件
4、Servlet的使用
jdk java开发工具包 --> ( jre java运行环境 --> ( JVM + java运行jar包,jdk自带jar包 ) + java开发工具 )
Servlet是Java中的接口,不属于jdk自带jar包,需要导入第三方的jar包( tomcat ) ;
1、先导入tomcat的jar包,到项目中;
2、创建一个AServlet,实现Servlet接口
将一个类变成Servlet的三种方式
1、实现Servlet接口,重写接口中的全部方法;
2、继承GenricServlet抽象类,重写抽象方法;
3、继承HttpServlet抽象类,根据需要进行重写;
三、Servlet简单应用
Servlet是 javaweb的三大组件之一,接受请求,给出响应;
1、创建Servlet的方式:
3种创建Servlet的方式:
- 通过现实Servlet接口,重写全部方法;
- 通过继承GenericServlet抽象类,重写service()方法;
- 通过继承HttpServlet抽象类,重写自己需要的方法;(开发种常用)
一般情况下,Java程序,想要执行需要通过main方法,声明对象,使用对象进行调用方法; Servlet的使用
编写完成Servlet之后,需要将Servlet类与路径相互绑定;
2、Serlvet的生命周期
Serlvet的生命周期: Servlet对象从出生、使用、死亡; Servlet会自己创建对象,然后自己调用自己 的生命周期方法;
3个生命周期方法;
- init(ServletConfig servletConfig) 初始化方法,看成servlet对象的出生; 当servlet对象一旦被创建时,就会马上执行init方法
- service(ServletRquest request , ServletResponse response) 服务方法,是servlet的主要方法,每当路径被请求时,就会执行此方法;
- destroy() 结束方法,当Servlet对象一被销毁,在销毁之前的时间执行此方法;
3、路径与servlet绑定的方式
1、使用web.xml配置文件进行绑定; 比较复杂
<servlet>
<servlet-name>servlet</servvlet-name>
<servlet-class>cn. hp. Aservlet</Servlet-class>
</servlet>
servlet-mapp1ng>
<servlet-name>servlet</servlet-name>
<!--当用户请求http://locathost:8080/web/a-->
<url-pattern>/a</url-pattern>
</servlet-mapping>
2、使用注解的方式:简单
在类的名称上一行,@WebServlet("/b");
4、servlet种的request 和 response
request:数据类型: HttpServletRequest请求
包含:用户发送来的内容以及浏览器的信息等等;
路径之后跟?key=value&key=value浏览器请求参数,当用户使用get方式时,就是用户发送的请求操作内容
用来接收用户从浏览器发送过来的数据
request.getParamter("key的名称") 获取到参数的value
请求转发:表面上还是你这个路径,但实际显示的内容由转发后的对象进行处理
只能转发给本程序中的路径
req.getRequestDispatcher("success.html").forward(req,resp);
请求包含:用法和转发一样
语法中将forward换成include
req.getRequestDispatcher("success.html").include(req,resp);
response:数据类型:HttpServletResponse 响应
重定向:将本次的请求,重新换了一个路径进行访问;
此路径,不局限于本项目,可以访问任意网路路径;
请求转发和重定向的区别:
1、请求转发由request对象发出,只能发送给本项目中存在的路径 重定向由response对象发出,不仅可以发送给本项目中的路径还能够发送给外部路径;
2、请求转发中一共有一个请求,导致页面中的路径只会是请求的路径 重定向包含两个请求,一个是用户原请求,第二个是servlet做的重定向请求;
3、请求转发可以支持post、get的请求 重定向第一个请求post、get都支持,第二个请求只支持get方式
4、服务器中,页面的跳转
当一个路径以 / 开头, /就代表 http://localhost:8080/
当一个路径不以 / 开头, 就是把原路径的最后一个文件名换成当前的路径内容
如 原文件路径 http://localhost:8080/web01/a.html ;
login 路径 --> http://localhost:8080/web01/login
/login 路径 --> http://localhost:8080/login
只有在一种情况下,两者跳的路径相同,javaweb项目没有设置项目名时
四、JSP简介
1、JSP是什么?
JSP:是一种页面,java server pages java服务器页面;想要这个页面运行,必须通过服务器中启跳转;
只能通过网络访问的方式查看效果,不能直接从本地通过浏览器打开; http://localhost:8080/web02/i ndex.jsp
2、JSP和与html的区别?
1、html是静态资源页面,jsp是动态资源页面,页面内的数据会改变;
2、html中只能使用标签,进行编写内容;jsp = html + java代码 + 指令 ;
3、jsp三大指令
三大指令
- page
- taglib
- include
在jsp页面最上方<%@ 指令名 属性... %>
1、page 用来配置当前jsp页面中的相关信息
属性:
contentType:用来配置当前jsp中文件的类型,以及编码格式
session:设置当前页面是否支持会话,false表示页面不支持session对象
isErrorPage:设置当前页面是否为错误页面
errorPage:指定哪一页面是错误页面
pageEncoding:设置当前页面的编码格式
import:向页面中导入Java的jar包
isELIgnored:用来设置当前页面中是否需要忽略el表达式
2、taglib:用来向jsp页面中导入 jstl表达式的
3、include:用来将多个页面合并成一个页面进行展示;
4、在jsp中Java代码编写格式
Java代码编写片段:
<% Java代码 %>
Java代码输出片段:
<%= 将数据内容输出到页面中 %>
5、jsp的作用域
四大作用域
- page
- request
- session
- application
域:用来保存数据;只不过,不用的域大小不一样,保存的数据时间也不一样;
page域: 页面域,当前页面中的全部数据,整个页面都共享;pageContext 只能在本页面中进行使用
request域:请求域,在同一次请求中,所有数据共享;域对象 request
在servlet中就是 HttpServletRequest类型的对象
在jsp中存在这默认内置对象,这个对象可以不用声明,直接在jsp中使用 对象名:request
session域:会话域,给服务器一次请求,服务器给一次响应,来回的交互过程就叫会话, 域对象: session
session即打开浏览器后的操作,都归为一次session,一旦关闭浏览器,此次session即结束;
随着第一次请求而创建,随着浏览器的关闭而销毁;
application域:应用域,最大的一个域,只要将数据保存在应用域中,在整个程序的任意位置都可以 获取到应用域中的数据,
随着程序的启动而创建,随着程序的关闭而销毁;
如何使用域中数据;
向域中存数据:req.setAttribute("key","value");
从域中取数据:req.getAttribute("key");
6、jsp的本质
先将jsp转换成.java文件,然后通过Java代码将JSP页面以及域对象数据,获取之后,重新拼接成一个新 的页面;
域数据 和 页面参数
7、域数据 和 页面参数
页面参数数据:
http://localhost:8080/web02/login?username=zs&pwd=123
?之后都是页面参数数据
在后端servlet中,通过request.getParamter(key)方法进行获取
域数据:必须是有放才有拿;
放数据:域对象.setAttribute("key",value); 可以在servlet中放、也可以在jsp中放
拿数据:域对象.getAttribute("key"); 可以在servlet中拿、也可以在jsp中拿
五、JSP内置对象
1、jsp的组成部分 html + java代码 + 指令
hmtl: 超文本标记语言
hmtl: 超文本标记语言
表格标记:格式化显示数据;
<table> 声明一个表格
<tr> 声明一行
<th></th> 标题,加粗居中
<th></th>
<th></th>
</tr>
<tr> 声明一行
<td></td> 声明一个单元格
<td></td> 声明一个单元格
<td></td> 声明一个单元格
</tr>
<tr> 声明一行
<td></td> 声明一个单元格
<td></td> 声明一个单元格
<td></td> 声明一个单元格
</tr>
</table>
表格的特殊属性:
表格的特殊属性:
给table设置的属性:cellspacing="" 设置当前表格中每个相邻单元格之间的间距
给td设置的属性:colspan=""设置当前单元格占几列 rowspan="" 设置档当前单元格占
几行
表单标记:收集用户的信息,让用户进行填写、选择、点击操作;
<form action="后端地址">
<input type="text" value="默认值" placeholder="提示内容" /> 文本输入框
input类型 四种类型( 输入框、选择样式、按钮样式、隐藏样式 )
<input type="password" /> 密码输入框 //
<input type="radio" /> 单选框
<input type="checkbox" /> 多选框
<input type="button" /> 默认按钮
<input type="submit" /> 提交按钮
<input rype="reset" /