Java后端基础

Unit_1 -- Java 应用程序开发

#Part_4

First:Servlet 编程

        01:Servlet 概念

                Java Servlet 是运行在 web 服务器或者应用服务器上的程序,它是作为 HTTP  客户端请求和 HTTP 服务器上的数据库或应用程序之间的中间层;

                1.1:Servlet 相关的接口和类

                                接口:

Servlet、ServletConfig、ServletRequest、ServletResponse、HttpServletRequest、HttpServletResponse、ServletContext

                               类:

HttpServlet(抽象类)、GenericServlet(抽象类)

        02:Servlet 使用
                2.1:Servlet 的开发方式

        ①:实现 Servlet 接口 (可以看出 Servlet  生命周期);

        ②:通过继承 GenericServlet;

        ③:通过继承 HttpServlet (常用)

                2.2:实现 Servlet 接口方式
主要方法
viod init(ServletConfig sc)注意事项:初始化方法就是把该 Servlet 装载到内存中,该函数只会被调用一次
ServletConfig getServletConfig()得到 ServletConfig 对象
String getServletInfo();该函数时得到 Servlet 配置信息
void service(ServletRequest req, ServletResponse resp)注意事项:该函数时服务函数,业务逻辑代码就是写在这里,每次都会执行
void destory()

销毁 Servlet 从内存中删除

注意事项:该函数被调用一次(1:reload 该 Servlet ;2:关闭 Tomcat;3:关机情况实现)

useUnicode=true&characterEncoding=UTF8添加这个时为了防止乱码,指定使用 Unicode 字符集,且使用 UTF-8 来编辑

        配置 web.xml ,相当于初始化配置,比如访问 Servlet ,配置一个 Servlet 路径、配置监听器、配置拦截器、配置项目发生错误的默认找的页面,配置编码格式等等,很关键

                2.3:Servlet 的使用 --- 继承 HttpServlet 方式

@WebServlet(name="MyHttpServlet")
public class MyHttpServlet extends HttpServlet {
	//在 HttpServlet 中,设计者对 post 提交和 get 提交分别做了处理
	//<form action ="提交给?"  method="post|get"/>,默认是get
	protected void doGet(HttpServletRequest req,HttpServletRespose resp)
		throws SetvletException,IOException{ 
				resp.getWriter().println("i am httpservlet doGet()");		
	}
	protected void doPost(HttpServletRequest req,HttpServletRespose resp) {
		
	}
	
}

                ServletRequest  和 ServletRespose 接口

        当用户请求到来时,Servlet 容器会创建一个 ServletRequest 对象封装请求数据,同时创建ServletRequest对象封装响应数据,HttpServletRequest  和 HttpServletRespose 分别实现这两个接口

ServletRequest 主要方法
Object getAttribute(String name)返回属性名为 name 的属性值
Enumeration getAttributeNames()返回请求中所有的属性

void removeAttribute(String name)

void setAttribute(String name, Object obj)

设置属性

String getCharacterEncoding();

String getParameter(String name)

返回请求 name 参数的值
Enumeration getParameterNames()获取所有参数名称
ServletOutputStream getOutputStream()用来发送对客户端的响应
PrintWriter getWrite()用来将字符文本发送到客户端

        Servlet 域对象:在指定区域中实现数据共享的对象

        域对象统一方法:

                ①:在设置作用域中共享数据:作用域对象.setAttribute(String name, Object value);

                ②:获取作用域中的共享数据:Object value = 作用域对象.getAttribute(String name);

                ③:删除作用域中指定的共享数据:作用域对象.removeAttribute(String name)

                         Servlet 有三大作用域对象:request、 session、 application
ServletRequest  主要方法
requestrequest 表示一个请求,只要发出一个请求就会创建一个 request ,它的作用域仅在当前请求中有效

①:用于服务器间同一请求不同页面之间的参数传递;

②:用于表单的控件值传递

session

①:session 中的数据可供当前会话中的所有 Servlet 共享

②:从用户打开浏览器开始,一直到关闭浏览器才结束,一次会话期间只会创建一个 session 对象

①:用于 web 开发中的登录验证;

②:用于电商网站中的购物车功能;

③:销毁的场景

④:session 超时;浏览器关闭后,session 会在超时之后被销毁;

⑤:调用 session.invalidate() 方法

application表示一个应用,作用域整个 web 应用,可以实现多次会话之间的数据共享在整个上下文中生效,可使用统计当前页面被访问了多少次

        03:Servlet 生命周期
                3.1:生命周期

                        1. web服务器首先会检查是否已经装载并创建了该 Servlet 实例对象。如果是直接进行第 “4” 步,否则执行第 “2” 步;

                        2. 装载并创建该 Servlet 的一个实例对象;

                        3. 调用 Servlet 实例对象的 init() 方法;

                        4. 创建一个用于封装 HTTP 请求消息的 HttpServletRequest 对象和一个代表 HTTP 响应消息的  HttpServletResponse 对象,然后调用 serviceI() 方法并将请求和响应作为参数传递进去;

                        5. web 应用被停止或重启之前,Servlet 引擎将 卸载  Servlet ,在卸载之前调用 Servlet 的 destroy() 方法。

                        web 服务器收到客户端的 HTTP 请求,会针对每一次请求,分别创建一个用于代表请求的 request 对象、和代表响应的 response 对象。 request 和 response 对象既然代表请求和响应,那我们要获取客户机提交过来的数据只需要找  request 对象就行了;要向客户机输出数据,只需要找 response 对象就行了;

                        HttpServletRequest

        ①:公共接口类 HttpServletRequest 继承自 ServletRequest。客户端浏览器发出的请求被封装成为一个 HttpServletRequest 对象;

        ②:对象包含了所有的信息包括请求的地址、请求的参数、提交的数据、上传的文件客户端的 IP ,甚至客户端操作系统都包含在其内;

                        HttpServletResponse

        HttpServletRequest 对象代表服务器的响应。这个对象中封装了向客户端发送数据,发送响应头,发送状态码的方法;

        04:转发和重定向的使用
                4.1:区别

                        ①:转发使用request ,而重定向使用 response;

                        ②:转发 URL 不会发生变化,重定向 URL 会发生变化;

                        ③:转发可以携带参数,重定向一般不携带参数;

                        ④:转发的是同一次请求,重定向是两次不同的请求;

                        ⑤:转发的速度快,重定向的速度慢;

                        ⑥:转发是服务端的行为,重定向是客户端的行为;

                        ⑦:转发只能在同一路径下,重定向可以到任意地址;

                        ⑧:转发中的路径前面可以加上 “/” ,表示从项目的根目录下去寻找,而重定向的时候路径前面绝对不可以加上“/”,因为重定向的路径前面加上“/” 表示从服务器的根目录下去寻找,即在 Tomcat 的根目录下寻找,就会丢失项目名称,发送 404 错误。

        05:Tomcat 的介绍和使用

                Tomcat 服务器是一个免费开源的 web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试 JSP 程序的首选;

                        Tomcat 下载和安装

                安装地址: http://tomcat.apache.org/download-80.cgi ,前提在本地 JDK 安装没问题的情况。

                        Tomcat 使用

                        Tomcat 使用--目录结构
bin启动和关闭 Tomcat 的 bat 文件
conf配置文件
sever.xml该文件用于配置和 server 相关的信息,比如 Tomcat 启动端口后,配置 Host ,配置 Context 即 web 应用
web.xml该文件配置与 web 应用(web 应用就相当于是一个 web 站点)
tomcat-users.xml该文件用于用户配置 Tomcat 的用户密码和权限
lib 目录该目录放置运行 Tomcat 运行时需要的 Jar 包
logs 目录存放日志,当启动 Tomcat 错误的时候,可以查询信息(Linux 系统用 tail -f catalina.out 命令查看)
webapps 目录该目录下,放置我们的 web 应用 
work:工作目录该目录用于存放 JSP 被访问后,生成的对应的 .java 文件和  .class 文件

Second:Mybatis 编程

        01:Mybatis 框架的使用
                1.1:Mybatis 概述

                        软件框架是为了实现组件特定规范,并提供规范所要求的基础功能的软件;

                        使用软件框架的好处有哪些?

        ①:不用再考虑公共问题;

        ②:专心在业务实现上;

        ③:结构统一,易于学习 和 维护;

        ④:新手也可以写出好程序;

                          SSM 是由 Spring、SpringMVC、Mybatis  三个开源框架整合而成,适用于 web 项目的框架集;

                        1.1.1:Mybatis 简介

                                Mybatis 框架是一个支持自定义 SQL 、存储过程 和 高级映射的持久层框架。

                        Ⅰ:Mybatis 前身是 iBatis ,是 Apache 的一个开源的项目,它是一种 ORM(Object  Relational Mapping)框架;

                        Ⅱ:ORM 是将程序中的对象与关系数据库中的数据建立映射关系的编程技术;

                        1.1.2:特点

                                ①:基于 SQL 语法,简单易学;

                                ②:能了解底层封装过程;

                                ③:SQL 语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度;

                                ④:方便程序代码调试。

                1.2:如何使用 Mybatis 框架
                        1.2.1:第一步:GitHub 官网下载 MySQL 版本,导入 MyBatis 框架的Jar 包、MySQL 包

                        1.2.2:编写 MyBatis 核心配置文件(mybatis-config.xml)

                注意事项:

MyBatis 和 Spring 框架整合后,数据源信息会在 Spring 框架中进行配置,MyBatis很少单独使用

                        1.2.3:创建实体类 -- POJO
public class Meeting {
    
    private Integer id;
    private String meetingName;
    private String startTime;
    private String endTime;
    private Integer provinceId;
    private Integer cityId;
    private Integer countyId;
    private String address;
    private String contact;
    private String telephone;
    private String mobilephone;
    private String introduce;
    private String image;
    private Integer state;


}
                        1.2.4:Dao 层 --- SQL 映射文件(mapper.xml)

                        1.2.5:创建测试类

        02:Mapper 接口的使用
                2.1:如何使用 Mapper 接口

                        ①:导入 MyBatis 框架的 Jar 包、MySQL 驱动包(同上);

                        ②:编写 MyBatis 核心配置文件(mybatis-config.xml)(同上);

                        ③:创建实体类 - POJO(同上);

                        ④:Dao 层 -- SQL 映射文件(mapper.xml)

                        ⑤:Dao 层 - Mapper 接口文件(MeetingDao.java)

                        ⑥:创建测试类

        03:Mybatis配置文件

                3.1:properties 配置数据库信息

                3.2:settings:MyBatis 的一些全局配置属性的设置
设置项描述允许值默认值
cacheEnabled对在此配置文件下的所有 cache 进行全局性开/关设置true / falsetrue
lazyLoadingEnabled

全局性设置懒加载;

如果设置为 false ,则所有相关联的都会被初始化加载

true / falsetrue
autoMappingBehaviorMyBatis 对于 resultMap自动映射匹配级别

NONE

PARTIAL

FULL

PARTIAL
mapUnderscoreToCamelCase设置启用数据库字段下划线映射到 Java 对象的驼峰式命名属性true / falsefalse
........................
                3.3:typeAliases:别名处理
---typeAliases 别名处理

        ---类型别名是为Java 类型设置一个短的名字,可以方便引用某个类
<typeAliases>
    <typeAliases alias="Meeting"type="com.test.pojo.Meeting"/>  
</typeAliases>


        ---默认名称:指定包下 JavaBean 的非限定类名
<typeAliases>
    <package name="com.test.pojo"/>
</typeAliases>

                3.4:优化查询语句的返回值
--- 优化查询语句返回值

<typeAliases>
    <package name="com.test.pojo"/>
</typeAliases>
                3.5:environments 表示配置 MyBatis 的多套运行环境,将 SQL 映射到多个不同的数据库上
                mappers:
--- mappers

            ---引入项目中的 Mapper接口,要求 Mapper接口与 SQL 映射文件同名同位置
<mappers>
    <mapper class="com.test.dao.MeetingMapper"/>
</mappers>

            ---批量引入项目中的 Mapper 接口
<mappers>
    <mapper class="com.test.dao"/>
</mappers>

                注意事项:

要求 Mapper 接口与 SQL 映射文件同名同位置

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值