mysql处理中文要注意的、servlet生命周期、容器如何处理请求资源路径

MVC

这里写图片描述

servlet是控制器。
视图是jsp
模型就是java类和dao
/

将jdbc封装到dao中
写个dao来访问数据库,不要emplist中的访问数据库,用dao代替

创建一个EMP类来保存数据库查询出来的信息。
也有id,name等信息。

注意都是分层的。
写的DBUtil产生的异常不会直接显示给最终,而是抛给下一层。
注意用分层的概念。

就是说单纯把对数据库的操作都拿出来。单独写类,然后在调用类。
并且创建一个类Employee来存储每一个员工数据

这里写图片描述

看不清,下面的地址能看到。我只是单纯的写出了这个emp的思路
https://www.processon.com/chart_image/582ffaabe4b05594f50e7e8f.png
注意:
Before start of result setc 错误是数据库查询返回的是一个指针,要rst.next()的。

mysql处理中文需要注意的问题:

数据库首先要支持中文:
创建数据库的时候后面加一句 default character set utf8
java使用unicode来编码的。
插入数据库是输出,要编码成本地字符集支持的形式
mysql的某些驱动,默认会使用“iso-8859-1”来编码的,对于中文就会发生乱码。
可以这样:

Class.forName("com.mysql.jdbc.Driver");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jsd1507db?"+”useUnicode=true&characterEncoding=utf8”, "root", "root");

这种写法只针对mysql(注意数据库名后面的问号)

servlet的生命周期:

1、什么是servlet的生命周期
容器如何去创建servlet对象,如何对其进行初始化处理,如何调用其方法来处理请求,以及如何销毁该对象的过程。
2、分成哪几个阶段
4个阶段

1)实例化

什么是实例化?
容器调用servlet的构造器,创建相应的对象
什么时候实例化?
情况1:容器收到请求之后。
注:容器只会创建一个实例

这里写图片描述

情况2:容器启动后立即创建
在描述文件添加:

<load-on-startup>1</load-on-startup>

参数要求是一个大于等于0的整数,越小,优先级越高。

这里写图片描述

并没有发送请求就执行了构造器

这里写图片描述

2)初始化

什么是初始化?
容器调用servlet对象的一个方法 init方法。该方法只会执行一次.
在调用servlet之前要调用init方法
GenericServlet的init方法是如何实现的?
将容器传递过来的ServletConfig对象保存下来,并且提供了一个获得对象的方法(getServletConfig)
如何实现自己的初始化处理逻辑?
只需要override GenericServlet提供的init()方法。

public void init() throws ServletException {
        // TODO Auto-generated method stub
        super.init();
        System.out.println("SomeServlet's init.....");
    }

这里写图片描述

初始化参数:
配置:

 <!-- 初始化参数 -->
 <init-param>
 <param-name>name</param-name>
 <param-value>Recar</param-value>
 </init-param>

读取:
String ServletConfig.getInitParameter(配置的参数名);
以后要改的话直接就去描述文件改就行了
要访问才会有。

这里写图片描述

3)调用(就绪)

什么是就绪?
容器调用servlet对象的service方法来处理请求。
HttpServlet的service方法是如何实现的?
依据请求类型(get/post)调用对应的doXXX方法(doGet/doPost)

这里写图片描述

注:
我们可以写一个servlet,继承HttpServlet,然后override doGet 和doPost或者也可以直接override service方法。

4)销毁

什么是销毁?
容器在删除servlet对象之前,会先调用该对象的destroy方法。
该方法只会执行一次。
销毁容器说了算。不同容器实现还不一样,但是只要把这个servlet从容器中删除就会执行销毁。

这里写图片描述

相关的几个类与接口

Servlet接口
:3个方法:
init
service
destroy
GenericServlet抽象类
实现了Servlet接口中的部分方法(init,destroy)
HttpServlet抽象类 继承GenericServlet抽象类,实现了service方法。

容器如何处理请求资源路径

比如,在浏览器地址输入
http://ip:port/web/asd.html
(1)容器依据应用名(“/web”)找到应用所在的文件夹。
(2)容器并不会马上去找这个文件夹的文件。容器会默认调用的是servlet,去web.xml查找有没有一个和”asd.html”匹配的servlet

这里写图片描述

再写个asd.html。还是返回的是servlet的asd.html
会先找servlet。没有再去单纯的html文件。

查找有没有一个和”asd.html”匹配的servlet
所谓的匹配:
(1)精确匹配

<url-pattern>/asd.html</url-pattern>

(2)通配符匹配
使用“*”匹配0个或者多个字符,比如:

<url-pattern>/*</url-pattern>

(3)后缀匹配:
使用“*.”开头,后接多个字符,比如:

<url-pattern>/*.do</url-pattern>

这个会匹配所有以.do结尾的请求

如果没有匹配的servlet,则容器会查找相应的文件。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值