【JavaWeb】JSP的概述
目录
一、什么是JSP
JSP:Java Server Pages (Java服务器端页面),其实就在HTML中嵌入Java代码。
二.为什么学习JSP
SUN公司提供了动态网页开发技术:Servlet。Servlet自身有一些缺点,SUN公司发现了这些问题,推出了一个新的动态网页开发技术JSP。
Servlet的缺点:
- Servlet需要进行配置,不方便维护
- Servlet很难向网页中输出HTML页面内容
1.JSP的运行原理
1.1创建一个JSP页面
1.2运行JSP
JSP需要发布到服务器中才可以运行的。
- 发布项目到Tomcat中
- 访问JSP页面
1.3JSP的运行原理分析
JSP文件翻译成Java文件,将这个Java文件编译生成class文件,运行class文件。
1.4JSP的脚本元素
1.4.1什么是JSP的脚本元素:
JSP = HTML + Java代码 + JSP自身东西
JSP的脚本元素就是在JSP中嵌入Java代码。
1.4.2JSP的脚本元素的分类
第一个:声明标签
- 语法:
- ①<%! 变量或方法声明 %>
- ②写在这个脚本中的代码,翻译成Servlet内部的成员变量或成员方法。
- 用法:
第二个:表达式标签
语法:
①<%= 表达式 %>
②写在这个脚本中的代码,翻译成方法内部的out.print();当中的内容。
用法:
第三个:程序代码标签
语法:
①<% 程序代码 %>
②写在这个脚本中的代码,翻译成方法内部的局部变量或方法内部代码片段。
用法:
三、JSP的开发模式之MVC模式
1.动态网页开发模式的发展
四、开发中的路径问题
1.什么时候会遇到路径问题
提供一些页面,在页面中会提供链接或者表单,当点击链接或者表单的时候需要进行提交,提交到Servlet中。从页面向Servlet发送请求的地址(路径)应该如何编写。
2.路径的分类
2.1相对路径:
相对路径的写法:相对路径不是以 / 开头的。
相对路径的使用:
①在根路径下的页面访问Servlet
demo2.jsp的访问路径:
http://localhost:8080/web02/demo2.jsp
ServletDemo1的访问路径:
http://localhost:8080/web02/ServletDemo1
②在某个目录下的页面访问Servlet
demo2.jsp的访问路径:
http://localhost:8080/web02/demo2/demo2.jsp
ServletDemo1的访问路径:
http://localhost:8080/web02/ServletDemo1
2.2绝对路径(通常):
绝对路径的写法:通常以 / 开始的路径
使用绝对路径,不需要关心当前文件和要请求的文件的相对位置的关系!!!
注意:
- ①绝对路径分成服务器端路径和客户端路径
- ②客户端路径 需要带工程名
- ③服务器端路径 不需要带工程名
五、案例需求介绍
1.案例需求描述
提供登录页面,用于用户登录(用户名和密码需要查询数据库)。如果登录失败,需要回到登录页面(给出提示信息)。如果登录成功,页面进行跳转,在成功页面上显示登录成功的总人数。
2.案例流程分析
3.MVC如何在案例中应用
这里说明一下,我们的mvc模式里面,原来的Servlet变成了Controller,封装和处理这块变成了Modul层,页面展示变成了View层。Controller层之做调度,实际的操作还是在Modul层操作。
4.案例准备-创建数据库
1.建表语句
create database web02_login;
use web02_login;
create table user(
uid int primary key auto_increment,
username varchar(20),
password varchar(20),
nickname varchar(20)
);
insert into user values (null,'zs','123','张三');
insert into user values (null,'ls','123','李四');
insert into user values (null,'ww','123','王五');
5.案例准备-项目环境搭建
1.创建web项目
写项目名字,然后选2.5版本
直接next
这里建立好的目录
接下来我们要修改Web项目的编译路径:
在WEB-INF目录下创建classes文件夹。
然后右击项目,选择Build Path ---> Configure Build Path
将编译的输出路径改为:项目名/WebContent/WEB-INF/classes。
点击Apply and Close,你会发现创建的classes文件夹消失了,可以将build文件夹删除了。至此,一个标准的动态Web项目就创建完成了!
2.创建相关的包结构
controller包存放控制层代码的,对应原来的Servlet
model包主要用来用处理数据的javabean存放的位置
domain包实体的意思,我们通常的数据封装的javabean类放到这里
utils包连接数据库的工具类放到这里
6.案例准备-引入相关资源
1.引入相关的jar包:
- MySQL数据库驱动包
- C3P0连接池所需jar包
- DBUtils开发的jar包
2.引入C3P0配置文件
将配置文件放到工程的src下即可
3.引入JDBC开发的工具类
7.案例准备-创建登录页面
1.登录页面实现
2.登录页面效果
8.案例代码-登录代码实现
1.登录代码实现流程
登录页面(login.jsp)--->>登录的Servlet(LoginServlet),在这个Servlet中需要接收数据,将这个数据封装到一个JavaBean中,调用另一个JavaBean处理数据。根据处理结果进行页面跳转。
2.登录代码实现
第一步:在controller包下创建LoginServlet
第二步:在domain下创建一个User类
第三步:在model包下创建一个UserModel类
在这个类中提供一个login的方法
第四步:根据处理结果进行页面跳转
3.登录的Servlet的业务代码
4.处理数据部分代码
5.登录代码错误信息回显
错误信息显示效果:
6.记录登录成功的人数分析
- 画图分析
1.1完成初始化操作
在服务器启动的时候初始化一个值为零,将这个值存入到ServletContext域中。
将这个Servlet配置成启动时加载:
1.2记录登录成功的人数
1.3在登录成功页面上显示总人数
六、请求转发和重定向完成页面跳转
1.请求转发
1.1请求转发的写法
通过ServletRequest对象获得RequestDispatcher对象。
再根据RequestDispatcher中的方法进行请求转发。
1.2请求转发的代码实现
1.3请求转发的效果
注意:这里我说一下,在我用eclipse建立动态web项目的时候,是直接按照指示建立的,但是建立完成之后,我写完转发的ServletDemo1.java代码后,在浏览器中输入对应的地址,就是不转发到相应的jsp页面,报错说说找不到我的ServletDemo1.java这个文件,百度了才知道,要在建立的webapp文件夹下面建立一个classes文件夹,并把java代码编译之后的位置改为这个位置,之前没有指定位置,导致java代码没有编译,所以找不到类。
2.重定向
2.1重定向的写法
通过HttpServletResponse对象中的以下方法实现重定向
2.2重定向的代码实现
2.3重定向的效果
3.请求转发和重定向区别
1.请求转发和重定向原理
转发就是客户端发出请求之后,找到Servlet,然后Servlet转发到jsp,然后jsp相应,返回给客户端。
而重定向是客户端发出请求之后,找到Servlet,然后Servlet把重定向的url,返回给客户端,然后客户端又请求这个url,找到jsp页面,然后相应之后返回给客户端。
2.请求转发和重定向区别总结
- 请求转发是一次请求一次响应,而重定向是两次请求两次响应。
- 请求转发地址栏不会变化的,重定向地址栏发生变化。
- 请求转发路径不带工程名,重定向需要带工程名路径。
- 请求转发只能在本网站内部,重定向可以定向到任何网站。
3.代码演示请求转发和重定向区别
jsp页面:
注意:
如果需要使用request进行值传递,需要通过请求转发完成。如果页面需要跳转到其他网站上必须使用重定向。