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
    评论
ava实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),可运行高分资源 Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现的毕业设计&&课程设计(包含运行文档+数据库+前后端代码),Java实现
C语言是一种广泛使用的编程语言,它具有高效、灵活、可移植性强等特点,被广泛应用于操作系统、嵌入式系统、数据库、编译器等领域的开发。C语言的基本语法包括变量、数据类型、运算符、控制结构(如if语句、循环语句等)、函数、指针等。下面详细介绍C语言的基本概念和语法。 1. 变量和数据类型 在C语言中,变量用于存储数据,数据类型用于定义变量的类型和范围。C语言支持多种数据类型,包括基本数据类型(如int、float、char等)和复合数据类型(如结构体、联合等)。 2. 运算符 C语言中常用的运算符包括算术运算符(如+、、、/等)、关系运算符(如==、!=、、=、<、<=等)、逻辑运算符(如&&、||、!等)。此外,还有位运算符(如&、|、^等)和指针运算符(如、等)。 3. 控制结构 C语言中常用的控制结构包括if语句、循环语句(如for、while等)和switch语句。通过这些控制结构,可以实现程序的分支、循环和多路选择等功能。 4. 函数 函数是C语言中用于封装代码的单元,可以实现代码的复用和模块化。C语言中定义函数使用关键字“void”或返回值类型(如int、float等),并通过“{”和“}”括起来的代码块来实现函数的功能。 5. 指针 指针是C语言中用于存储变量地址的变量。通过指针,可以实现对内存的间接访问和修改。C语言中定义指针使用星号()符号,指向数组、字符串和结构体等数据结构时,还需要注意数组名和字符串常量的特殊性质。 6. 数组和字符串 数组是C语言中用于存储同类型数据的结构,可以通过索引访问和修改数组中的元素。字符串是C语言中用于存储文本数据的特殊类型,通常以字符串常量的形式出现,用双引号("...")括起来,末尾自动添加'\0'字符。 7. 结构体和联合 结构体和联合是C语言中用于存储不同类型数据的复合数据类型。结构体由多个成员组成,每个成员可以是不同的数据类型;联合由多个变量组成,它们共用同一块内存空间。通过结构体和联合,可以实现数据的封装和抽象。 8. 文件操作 C语言中通过文件操作函数(如fopen、fclose、fread、fwrite等)实现对文件的读写操作。文件操作函数通常返回文件指针,用于表示打开的文件。通过文件指针,可以进行文件的定位、读写等操作。 总之,C语言是一种功能强大、灵活高效的编程语言,广泛应用于各种领域。掌握C语言的基本语法和数据结构,可以为编程学习和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值