MVC
1、用户登录项目处理:
a.用户点击登录发送请求到loginServet进行处理,Tomcat服务器接收到请求后调用loginServlet中的service方法进行处理,request对象和response对象作为实参传递给service方法
b.在loginServlet中调用业务层方法进行登录业务处理
c.在业务层方法中调用Dao(Data Base Object)层方法进行数据库操作
d.完成功能跳转
2、分层开发思想MVC:
M:model service层和dao层和实体类层
v:view 视图层和jsp页面等
c:controller 控制层 servlet
项目名称:后台管理系统
需求分析:
1.实现用户登录
连接数据库,进行查询操作,查到则登录成功,否则登陆失败
2.实现用户注册
连接数据库,进行新增操作
3.实现用户退出
销毁session信息
代码实现:参照源码
开发工具MyEclipse,项目结构总览
JS和JQ代码报错可以忽略,代码可以正常使用
一、首先用前端写好的页面拿到我们的JSP中
二、具体业务逻辑代码实现
实体类封装数据:
Dao层接口:
Dao层实现类:
业务逻辑接口:
业务逻辑接口实现类:
通用工具类:
Servlet中相关操作
处理登录Servlet:
处理注册Servlet:
处理退出Servlet:
向上封装的BaseServlet:
同一个模块的通用Servlet:
业务处理效果截图:
JSP+Servlet第一个案例总结与缺陷:
MVC
一、用户登录项目处理:
1.用户点击登录发送请求到loginServet进行处理,Tomcat服务器接收到请求后调用loginServlet中的service方法进行处理,request对象和response对象作为实参传递给service方法
2.在loginServlet中调用业务层方法进行登录业务处理
3.在业务层方法中调用Dao(Data Base Object)层方法进行数据库操作
4.完成功能跳转
二、分层开发思想MVC:
M:model service层和dao层和实体类层
v:view 视图层和jsp页面等
c:controller 控制层 servlet
三、项目实战
项目名称:尚学堂后台管理系统
需求分析:
1.实现用户登录
连接数据库,进行查询操作,查到则登录成功,否则登陆失败
2.实现用户注册
连接数据库,进行新增操作
3.实现用户退出
销毁session信息
代码实现:参照源码
问题一、
现在我们一个请求或者一个独立的业务逻辑都单独进行一个Servlet的创建进行请求处理,但是一个网站的功能是非常的多,如果每个都出创建单独的Servlet进行处理,这样造成Servlet过多,造成资源浪费
解决:
1.服务器在接收到浏览器发送的请求后,会调用相应的Servlet进行请求处理,然后调用Servlet中的Service方法进行处理
2.我们将不同功能的业务封装成不同的方法,并在Service方法中调用其相应的功能处理方法进行处理请求,这样Servlet我们只需要一个
新的问题
如何在service方法中实现根据不同请求,动态的调用相关处理方法
解决:
使用反射技术
注意:
请求中需要添加待执行的方法名称
问题二、
通过反射技术我们实现了在service方法根据不同请求,动态调用相应方法进行处理
但是在真实开发中,虽然每个功能不会都创建一个Servlet,但不只用一个Servlet
一般是一个独立的功能模块用一个Servlet,我们需要在这些Servlet中的service方法中都使用反射技术进行动态处理
解决:向上抽取BaseServlet类
实现:向上抽取成父类继承,由于Java单继承,So--->:我们自己的Servlet --继-承--> 向上抽取父类BaseServlet(重写service) --继-承--> HttpServlet
四、BaseServlet使用:
1、创建Servlet继承BaseServlet即可
2、在自己的servlet中不要声明service方法,只要书写请求处理功能方法即可
3、正常访问我们自己的servlet --服-务-器-会--> 执行父类service方法
注意:
请求必须附带要被执行的方法名(处理相应请求)
-----------------------------------------------
JSP+Servlet项目整合练习总结:
总结:
1、套用模版进行页面快速构建
在自己的项目中创建jsp文件
然后将模版中的前端相关代码赋值到自己的jsp文件中
将静态资源复制到webRoot下
2、MVC的开发流程
M:model service dao pojo
v:view jsp js css html
c:controller Servlet
3、Servlet+jsp+jdbc的功能开发流程
1、浏览器发起页面请求直接给jsp
2、浏览器发起功能请求给servlet,servlet调用service,service进行业务逻辑处理,service调用dao,dao层进行数据库操作(jdbc),dao层将处理结果返回给serviceservice再将结果返回给servlet,(或者继续请求转发或者重定向其他Servlet继续处理) ,请求转发或者重定向给jsp,jsp做出页面响应。
3、request和session作用域的使用
request:请求转发的数据流转的载体
session:重定向的数据流转的载体(但是session可以解决同一个用户的不同请求的数据库共享问题)。
4、浏览器发起请求到服务器请求发起的方式(重点记忆)
非ajax请求
form表单提交:action数据提交地址,method:数据提交方式
超链接标签:href:为数据提交地址,可以直接使用?拼接请求数据,类似form表单的get请求方式。
js中的window.location.herf:为数据提交地址,可以直接使用?拼接请求数据,类似form表单的get请求方式。
注意:
使用以上请求方式发起的请求,浏览器在接收到响应内容后,会将原有内容覆盖,显示响应结果。
5、BaseServlet的抽取和使用
反射
抽象类
---------------------------------------------------------
项目缺陷:
1、在jsp中获取从Servlet流转过来的数据特别麻烦
2、在jsp页面中使用java代码块进行逻辑处理书写和阅读极不方便
3、使用session进行数据流转是很方便的,但是session失效了,所有依赖session的功能都会出问题。
4、响应结果都是覆盖原有内容显示给用户