目录
思维导图详解
jsp的基本使用
概述
在浏览器上看web项目中所编写的效果,显示页面是JSP页面而不是HTML页面。
1.什么是JSP?
(0)全称:Java Server Pages java服务端页面。
(1)JSP是一种web的动态页面技术(数据可以随时更新--通过java技术)
(2)JSP页面作用:可以编写HTML代码+Java代码
(3)jsp页面其本质就是一个简化的servlet程序。(serlvet就是一个java文件。)
b站---搜索所有的java教程---讲解javaweb技术---先从servlet开始讲--jsp
体系:先将jsp,再涉及到servlet 目的很简单---学习更容易。
(4)在JSP页面要编写Java代码 需要有一个特殊的区域容器包裹。
2.为什么要学习JSP?
(1)简单,实现动态技术交互(java+HTML数据交互)
(2)jsp页面要比servlet简单,容易入门。
3.web应用程序的工作原理
web服务器作用:中转站 接收用户请求,将请求进行解析---》给到数据库数据匹配--最终响应给客户端
客户端(浏览器被打开)---访问一个资源----相当于想服务器发送了一个请求
--服务器接收该请求---服务器将接收的请求进行解析获取---将数据发送到数据库服务器中---进行匹配
---不管匹配成功与否---都会返回一个数据出来给服务器---服务器拿到这个结果---反馈给客户端。
4.JSP的工作原理?
(1)客户端(浏览器打开访问指定资源(访问一个指定的资源里面的一个JSP页面))
---向指定的web服务器发送了一个请求
(2)服务器要接收用户发送的请求,服务器此时需要做一件事情:拿着这个用户的请求进行解析,看当前服务器中是否存在这个页面
(3)请求的页面在web服务器存在,但是识别不了,必须将jsp页面文件转换一个servlet文件去编译(java)
(4)将java文件编译成.class字节码文件才能识别
(5)识别后,能够将所有请求信息进行解决,最后将结果响应(反馈)给当前客户端。
注意事项:只要web程序中的某个资源页面第一次被访问时,JSP会立刻生成一个java文件
D:\Zking\workspace\t281_web\ 根据各自的电脑而定 工作区间
路径:D:\Zking\workspace\t281_web\.metadata\.plugins\
org.eclipse.wst.server.core\tmp0\work\Catalina\localhost\
web_02\org\apache\jsp
在不改变JSP页面内容的情况下,不停的刷新JSP页面,生成的java文件不会发生改变
一旦涉及到JSP页面内容的改变,java文件会自动更新。
5.JSP页面的组成
6个模块:静态内容(HTML+CSS),指令,注释,脚本,声明,表达式
5.1 JSP指令
作用:可以设置JSP页面的编码以及导入外类Java文件类引入外部HTML网页JSP文件导入第三方JSTL库。
整个JSP体系中指令:3个 简称三大指令
(1)page指令(2)include指令(3)taglib指令
今日讲解指令:page指令 另外两个 后续再将。
------------------------------------------------------
page指令:
作用:可以设置JSP页面的编码以及导入外类Java文件类
在JSP页面的存放位置:必须放于最顶端。
<%--
//这行代码自动生成 所以不需要死机
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
language="java" 该页面可以支持的语言
contentType="text/html; charset=utf-8" 页面的内容类型 支持HTML 编码utf-8
pageEncoding="utf-8" jsp页面的编码 utf-8
导入Scanner
<%@ page import = "java.util.Scanner"%>
--%>
5.2 注释
整个JSP页面中,需要编写的代码:HTML+CSS+JS+jQUery+Bootstrap+easyui+Java代码
每种技术中所标记的注释格式是不一样的。 快捷方式也不一样
HTML注释 <!-- -- > 作用:在页面上不会显示,查看源代码可以显示
CSS注释 /* */ 作用:在页面上不会显示,查看源代码可以显示
JavaScript|jQuery注释 //单行注释 /*多行注释*/ 作用:在页面上不会显示,查看源代码可以显示
Java代码注释 //单行注释 /*多行注释*/ 作用:在页面上不会显示,查看源代码不可以显示
JSP脚本注释 <%-- --%> 作用:在页面上不会显示,查看源代码不会显示
5.3 脚本
所谓脚本就是能够编写java代码。 < % % >
5.4 声明模块
语法: < % ! % >
作用:定义变量,定义方法
5.5表达式
语法: < % = % >
作用:输出功能,并且每个表达式后面严禁+; 否则报错
-->
<h1>我改变了JSP内容</h1>
<%
//创建一个输入器
Scanner sc = new Scanner(System.in);
/*
多行注释java
*/
Random rd = new Random();
%>
<!-- HTML注释 -->
<%--
jsp脚本注释
--%>
表单的提交方式
概述:
网站上所有看到的输入框以及单选框以及复选框以及下拉框这些东西都可以称为表单元素
2.关于HTML语言中的form表单提交的方式
(1)所有的表单元素如果要进行页面提交需要使用form标签包裹。
(2)关于form标签上的属性作用
action 提交的地址 发送当前页面的数据到另外的页面去。
method 请求的方式
get请求 特点:参数会暴露在地址栏上,数据大小有限制,不安全,做一些查询的工作
post请求 特点:与get请求正好相反
如果不想通过form表单进行提交数据
js---location拼接
-->
<h3>用户注册</h3>
<hr/>
<!-- demo3只是一个中转站页面 接收请求以及将请求中解析的数据送给数据库进行匹配 -->
<form action = "demo3.jsp" method = "post">
用户: <input type = "text"/>
<br/>
<br/>
<input type = "submit" value = "注册"/>
</form>
表单基本使用
<h3>英雄联盟登录页面</h3>
<hr/>
<form action = "dologin.jsp" method ="post">
用户: <input type = "text" name = "username" />
<br/><br/>
密码: <input type = "password" name = "password" />
<br/><br/>
选择武器:
<input type = "checkbox" name = "wq" value = "AK47"/>AK47
<input type = "checkbox" name = "wq" value = "AN94"/>AN94
<input type = "checkbox" name = "wq" value = "M416"/>M416
<input type = "checkbox" name = "wq" value = "M4A1"/>M4A1
<input type = "checkbox" name = "wq" value = "AWM"/>AWM
<input type = "checkbox" name = "wq" value = "MK47"/>MK47
<br/><br/>
<input type = "submit" value = "登录"/>
</form>
跳转后的新界面(命名:以do开头加当前界面的名字)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
//彩蛋 将来我们所有的中转站页面中的代码全部要搬走(src文件中),最终,这些所谓的中转站页面都会销毁。
//中转站 不会在浏览器上显示效果,是属于隐藏的。
//该页面作用:接收用户登录页面中的表单数据提交以及将来将这些数据送往数据库进行交互。
//获取form表单提交的数据 需要通过jsp的request对象来获取
//因为表单在提价时,所有的数据都封装到了request对象中。,
//如果请求中含有中文 需要设置编码
request.setCharacterEncoding("utf-8");
//根据request获取表单提交的值
//用户名
String username = request.getParameter("username");
//密码
String password = request.getParameter("password");
out.println("用户名: "+username);
out.println("<br/>密码: "+password+"<br/>");
//如果是复选框 可以格局getParameterValues方法来获取一组值 类型:字符串数组
String[] wqs = request.getParameterValues("wq");//null 空指针异常错误
if(null!=wqs){
String xwq = "";
//得到每一个 遍历
for(String wq :wqs){
//out.println(wq);
xwq+=wq+",";
}
//去掉最后一个逗号
xwq = xwq.substring(0,xwq.lastIndexOf(','));
out.println(xwq);
}
//可以进行数据库交互 将当前获取的用户名和密码 传输到数据库中进行sleect查找
//sql = "select * from tb_xxx where username = ? and password= ?"
/*
//假设我们数据库中有admin和123
if("admin".equals(username) && "123".equals(password)){
//实现跳转 可以根据js中的location实现 out对象输出js脚本代码
//out.println("登录成功,可以跳转到主页面");
out.println("<script>alert('登录成功');location.href='home.jsp'</script>");
}else{
//out.println("登录失败,账号或密码错误,重新登录");
out.println("<script>alert('登录失败,账号或密码错误,重新登录');location.href='login.jsp'</script>");
} */
%>
jsp内置对象的使用
JSP的内置对象使用
内置对象:JSP体系中已经定义好的一些对象,在JSP页面中使用内置对象是不需要是实例化的,直接可以使用。
跟Oracle中内置函数是一个道理。
JSP9大内置对象
out对象 今日讲解
request对象 今日讲解
response对象
session对象
application对象
config对象
page对象
pageContext对象
exception对象
-----------------------------------------------------------
out对象的作用:向页面输出结果
print()方法
<%
int a = 10;
out.print("你好");
/* out对象可以输出字符串 */
out.println("字符串");
/* out对象可以输出变量 */
out.println("变量a = "+a);
/* out对象可以输出HTML标签 */
out.println("<hr>");
/* out对象可以输出js脚本代码 */
out.println("<script>alert(123);</script>");
%>
<!-- print 与println的区别
在输出html标签是 是否跨行(源代码)
-->
<%
out.print("<div>123</div>");
out.print("<div>456</div>");
out.print("<div>789</div>");
%>
<hr/>
<%
out.println("<div>123</div>");
out.println("<div>456</div>");
out.println("<div>789</div>");
%>
request对象
概念
概念:浏览器客户端发送一个请求给服务器,服务器肯定要接收这个请求。
此时,请求中的数据全部会封装到JSP的request请求对象中。
在服务器中 如果要获取请求中的信息 你需要通过request对象调用指定的方法来获取。
而且获取前必须给form表单中的所有输入项设置name属性才能获取
因为request对象调用的方法是通过name属性去获取的。
注意事项:
服务器中的中转页面接收请求是,如果请求中的数据含有中文。
在获取前需要设置request请求对象中数据编码格式 否则会出现乱码。
request对象中的方法:20个左右
目前:掌握3个就OK
setCharacterEncoding() 设置请求的编码格式
getParameter 获取请求参数 获取一个值
getParameterValues 获取一个key对应的多个参数 获取一组值
浏览器发送的请求给服务器,服务器不能直接接收请求,
需要通过一个页面来接收,接收后与数据库进行交互在将数据响应给浏览器。
案例:用户登录
1.登录页面:输入用户和密码 进行登录
2.中转站页面:接收登录页面提交的数据 进行数据库交互
只要有页面提交的概念,都必须创建中转站页面。
中转站页面的所有命名规则: 以do开头+当前页面的名称。
中转站页面作用:只用来做获取数据及数据库交互,并没有实现页面显示
所以,该页面中所有的HTML标记都可以去掉。
3.成功的页面
与数据库进行交互后,如果满足要求--进入主页面的
如果不满足要求---重新进入登录页面进行登录验证。