Java基础_Servlet

实例化Servlet:

当初次请求Servlet时,Servlet容器会根据web.xml实例化Servlet类,当有新的客户请求时,Servlet容器不会再实例化这个Servlet类,而是开启一个新的线程,所以会出现单实例多线程的状态;

Servlet响应过程:

1, 用户点击链接,客户端发送Servlet请求;
2,服务器接收到请求后交给相应的容器来进行处理,当容器发现为Servlet的请求时,容器会创建HttpServletRequest和HttpServletResponse;
3,容器通过请求消息中的URL找到对应的Servlet,创建一个新的线程,将HttpServletRequest和HttpServletResponse两个对象以参数的形式传给新创建的线程;
4,容器调用Servlet的service()方法,service()方法根据请求的不同调用对应的dopost()或者doget()方法来完成具体的请求处理;
5,容器将响应信息按照HTTP组装好返回给客户端,同时线程运行结束,删除产生的HttpServletRequest和HttpServletResponse对象;

Servlet的生命周期:

1,加载: 容器通过类加载器来加载Servlet;
2,创建: 通过Servlet构造方法来创建Servlet对象;
3,初始化: 调用Servlet的init()方法进行初始化,只初始化一次;
4,处理客户请求: 容器在接收到客户端请求时,都会创建一个新的线程,通过调用Servlet的service()方法,service()方法根据请求的不同调用对应的dopost()或者doget()方法来完成具体的请求处理;
5,卸载: 容器在卸载Servlet之前需要调用destory()方法,让Servlet释放所占用的系统资源;

forward和redirect的区别:

forwardredirect
服务器请求资源,服务器直接访问目标的URL,将URL的响应内容读取过来,然后将内容发送给浏览器,地址保持不变;redirect是服务器发送一个状态让浏览器去请求地址,地址栏显示新的地址;
转发页面和转发到的页面共享request的数据信息;不共享数据;
在同一个web应用内资源之间转发请求;服务器内部的操作;

HttpServletRequest获取中文乱码问题:

获取处理的数据解析前的源码,然后用UTF-8来解析;设置tomcat,在conf目录下的servlet.xml文件中找到端口号为8080的那一行添加URLEncoding=“UTF-8”;post提交,设置请求体的默认编码解析方式为UTF-8,request.setCharacterEncoding(“UTF-8”);

HttpServletResponse响应中文乱码问题:

response.setCharacterEncoding(“UTF-8”);
request.setHeader(“Content-type”,“text/html;charset=UTF-8”);

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值