Servlet

一,MVC分层开发

1,MVC分层开发模式

作用:

将代码根据不同的功能进行分层开发,分层的意思就是分为不同的包。

特点:

  • 降低代码的冗余,提高代码的重用性。
  • 提高代码的阅读性。
  • 便于后期的维护升级。
  • 降低代码之间的耦合性。

概念:

  • M:Model模型(service+dao+pojo)。(service: 业务层,处理业务 dao:专门操作数据库 pojo:存放实体类)

  • V:View视图(HTML页面+JSP页面)。

  • C:Controller控制器(Servlet)。(控制器的作用:接收请求,处理请求,完成响应)

使用:

 MVC分层开发落地的使用,也就是创建不同的包,然后在不同的包中写功能不同的代码。

  • com.zqwl.controller 编写Servlet代码

  • com.zqwl.service 编写业务层的接口

  • com.zqwl.service.impl 编写业务层的实现类

  • com.zqwl.dao 编写持久层的接口

  • com.zqwl.dao.impl 编写持久层的接口实现类

  • com.zqwl.pojo 编写实体类

 说明:

1,JavaBean:一种类的规格编写规范。(这里的Bean是对象的意思)

它在MVC中的设计模型中的model(模型层)。

实际上JavaBean指的就是自定义一个类,里面有属性有方法,属性提供对应的ge/tset方法,提供对于的构造方法。

以entity,domain,vo,pojo命名的包,包中的类都满足javaBean的规范。

2,Entity

在entity包下面的实体类中所有的属性和数据库表中的字段,数据类型逐一对应。

3,domain

domain包下实体类中的属性不仅会包含数据库中的字段,还会包含其他自定义属性。

4,pojo

pojo包下面的实体类并没有严格定义。 (Entity和domain都可以放入)

5,vo(view object)

vo包下面的实体类的属性与数据库并没有关系,而是服务器与页面交互的视图数据(后台和前端进行交互的数据类)。

二,请求转发与请求重定向

1,请求转发

作用:

​在Servlet的service方法中完成其他Servlet的调用。

代码:

req.getRequestDispatcher("/转发地址").forward(req,resp); 

特点:

  • 请求转发是一次请求,地址栏地址不变,访问的地址还是第一个Servlet的地址。
  • 转发内的各个请求Servlet共享一个request对象。
  • 请求转发是Tomcat服务器内部的行为,我们用户是看不到的。
  • 存储数据:req.setAttribute(String key, Object value);
  • 获取数据:req.getAttribute(String key);
  • 请求转发可以实现在后端Servlet之间的相互调用,一个请求由一个Servlet处理,转变为了多个Servlet的协同处理。

2,请求重定向

实现过程:

当浏览器发送请求给Tomcat服务器时,由于Servlet1类无法完成所有的响应任务,它会给浏览器返回状态码为302的响应,浏览器接收到重定向的响应后,重新发送请求到Servlet2,Servlet2接收到请求,处理请求,完成响应。       

代码实现:

resp.sendRedirect(req.getContextPath() + "/重定向的地址");

特点:

  • 重定向是两次请求,地址栏信息改变,地址会变成第二次请求的地址。

  • 重定向的地址是浏览器收到第一次请求响应回来的地址,自动跳转的,用户不参与。

  • 重定向的两次请求,request对象是不同的。

3,请求转发与请求重定向总结

转发:浏览器的地址栏不发生改变,请求1次响应1次,共享Request和Response对象,通过Requset对象来传递数据,速度相对较快,属于服务器内部的行为。

重定向:浏览器的地址栏发生改变,请求2次响应2次,不共享Request和Response对象,不是通过Requset对象来传递数据,速度相对较慢,属于非服务器内部的行为。

三,Cookie对象

1,Cookie引入的原因

http协议为无状态协议

2,Cookie的执行思想

浏览器发起请求到服务器,服务器创建Cookie,在Cookie中存储数据,响应回到浏览器,浏览器会将Cookie存储到客服端

浏览器再次发送请求时,会自动携带Cookie到服务器。

3,Cookie的使用

3.1 Cookie的创建及响应
//创建Cookie,Cookie中保存的数据是键值对的方式
Cookie cookie = new Cookie("username", "root");

//将创建好的Cookie添加到响应中,这样浏览器就会将Cookie中的信息保存起来了
resp.addCookie(cookie);

Cookie中存放的是键值对的数据,而且要求值只能是字符串的!

3.2,Cookie的获取
Cookie[] cookies = req.getCookies();
if(cookies != null){
    for (Cookie cookie : cookies) {
        String name = cookie.getName();
        String value = cookie.getValue();
        System.out.println(name + ":" + value);
    }
}
 3.3,存活时间:MaxAge

1. 默认:浏览器的本次回话,浏览器不关闭,Cookie不销毁。浏览器关闭,Cookie销毁。 状态Cookie

2. 设置存活时间:

  • 正数:指定秒数后销毁 持久化Cookie
  • 负数(默认):浏览器关闭销毁
  • 0:立刻销毁
 3.4,Cookie的Path属性

设置哪些资源可以使用Cookie:Path

  •  /部署的项目名(默认):该项目中所有资源都可以使用
  •  / :当前tomcat中部署的所有项目都可以使用
  •  /部署项目名/资源名 :只有该资源可以使用
3.5,Cookie的domain属性

设置哪些域名可以使用Cookie:DoMain

  • 默认:访问时的域名。
  • 允许二级域名跨域。.zqwl.com -> www.zqwl.com aaa.zqwl.com
  • 不允许一级域名跨域。www.zqwl.com -> www.baidu.com(不允许)

注意事项: localhost 和 127.0.0.1 为跨域。 访问时的端口号不一样也属于跨域。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值