JAVA语言之JavaWeb之Servlet
小标 2019-04-03 来源 : 阅读 1058 评论 0

摘要:本文主要向大家介绍了JAVA语言之JavaWeb之Servlet,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

本文主要向大家介绍了JAVA语言之JavaWeb之Servlet,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。

JAVA语言之JavaWeb之Servlet

1. Servlet



其实servlet就是一个Java程序,运行在服务器上,用于接收和响应客户端的请求



2. 创建Servlet



创建一个servlet继承,继承HttpServlet,重写doget、dopost方法



3.配置Servlet


<?xml version="1.0" encoding="UTF-8"?>
 <web-app xmlns="//xmlns.jcp.org/xml/ns/javaee"
 xmlns:xsi="//www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="//xmlns.jcp.org/xml/ns/javaee //xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
 version="4.0">
 <servlet>
 <!--注册一个名为HelloServlet的Servelt,路径为xxx-->
 <servlet-name>HelloServlet</servlet-name>
 <servlet-class>com.kernel.test.HelloServlet</servlet-class>
 </servlet>
 <servlet-mapping>
 <!--将url-pattern里面设置的路径映射到已注册的Servlet上-->
 <servlet-name>HelloServlet</servlet-name>
 <url-pattern>/hello.do</url-pattern>
 </servlet-mapping>
 </web-app>


4. Servlet执行流程



从地址栏上获取路径,然后找到Web.xml这个配置文件,将路径和pattern向匹配,如果不能匹配,返回404,如果能匹配上,找到和这个pattern对应是servlet-name,然后通过这个servlet-name,找到servlet里面的servlet-name,是否内容相同,如果不相同,返回404,如果相同,找到这个servlet-name对应的class文件的路径,然后执行该class的servce方法



5. Servlet生命周期



当第一次发出http请求时,会调用init方法,创建servlet。然后每次访问都会调用service方法,直到从tomcat服务器将项目移出或者调用shutdown.bat才会调用destroy,销毁servlet



6. Servlet初始化时机



默认情况下,只有初次请求servlet时,才会调用init方法,创建实例。我们通常在web.xml文件的servlet标签中增加一个子标签,on-load-startup中增加一个正整数,数值通常大于1,数值越少,说明它实例越早被创建。



<servlet>
 <servlet-name>HelloServlet</servlet-name>
 <servlet-class>com.kernel.test.HelloServlet</servlet-class>
 <load-on-startup>4</load-on-startup>
 </servlet>


7. ServletConfig



可以通过该对象的实例获取Servlet的配置信息
当我们引入别人的Servlet生成的jar包时,假如这个Servlet需要一个参数,我们我们使用这个Servlet的时候,在注册这个Servlet,必须要在Servlet中定义init-nit-param。



8. Servlet匹配方式



全路径匹配:/list
前半段匹配:/list/
扩展名匹配:
.扩展名



9. ServerContext



Servlet上下文,每个Web工程都有且仅有一个ServletContext对象,可以获取全局配置参数,还可以使用ServletContext读取配置文件



10. HttpServletRequest



request.getHeader():获取请求头
request.getParameter():获取提交过来的数据



11. 请求参数中文乱码解决方案




  • POST



    POST提交参数产生中文乱码的原因是客户端和服务端通信的编码不一致,我们只需设置双方为统一的编码就可以了
    request.setCharacterEncoding("UTF-8");




  • GET


    对于以GET提交的中文参数,即使设置以指定编码方式接收数据也没用。默认还是会使用ISO8859-1这个编码接收数据,所以我们的解决策略是先以ISO8859-1编码接收数据,接收到的数据为字节数组,然后通过字节数组构建字符串,代码如下:
    String name = request.getParameter("name");
    String name =new String(name.getBytes("ISO8859-1"), "UTF-8") ;




12. HttpServletResponse



response.getOutputStream():向浏览器发送数据
response.setStatus():设置响应状态码
响应数据中,如果有中文,会出现乱码问题,代码如下:
response.setHeader("Content-type", "text/html;charset=UTF-8")



13.请求转发和重定向



请求转发
request.getRequestDispatcher("index.html").forward(request, response);
重定向(两种写法)
response.setStatus(302);
response.setHeader("Location", "index.html");
response.sendRedirect("index.html");
请求转发和重定向的区别:
重定向地址栏发生变化,请求转发定地址栏没有变化
重定向需要向服务器发送两次请求,请求转发向服务器发送一次请求
重定向在客户端完成,请求转发在服务器完成
重定向速度慢,请求转发速度快
重定向可以跳转到任意路径,请求转发只能在跳转到本项目


   

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!

本文由 @小标 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程