摘要:本文主要向大家介绍了JAVA语言之JavaWeb之Servlet,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言之JavaWeb之Servlet,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
其实servlet就是一个Java程序,运行在服务器上,用于接收和响应客户端的请求
创建一个servlet继承,继承HttpServlet,重写doget、dopost方法
<?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>
从地址栏上获取路径,然后找到Web.xml这个配置文件,将路径和pattern向匹配,如果不能匹配,返回404,如果能匹配上,找到和这个pattern对应是servlet-name,然后通过这个servlet-name,找到servlet里面的servlet-name,是否内容相同,如果不相同,返回404,如果相同,找到这个servlet-name对应的class文件的路径,然后执行该class的servce方法
当第一次发出http请求时,会调用init方法,创建servlet。然后每次访问都会调用service方法,直到从tomcat服务器将项目移出或者调用shutdown.bat才会调用destroy,销毁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>
可以通过该对象的实例获取Servlet的配置信息
当我们引入别人的Servlet生成的jar包时,假如这个Servlet需要一个参数,我们我们使用这个Servlet的时候,在注册这个Servlet,必须要在Servlet中定义init-nit-param。
全路径匹配:/list
前半段匹配:/list/
扩展名匹配:.扩展名
Servlet上下文,每个Web工程都有且仅有一个ServletContext对象,可以获取全局配置参数,还可以使用ServletContext读取配置文件
request.getHeader():获取请求头
request.getParameter():获取提交过来的数据
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") ;
response.getOutputStream():向浏览器发送数据
response.setStatus():设置响应状态码
响应数据中,如果有中文,会出现乱码问题,代码如下:
response.setHeader("Content-type", "text/html;charset=UTF-8")
请求转发
request.getRequestDispatcher("index.html").forward(request, response);
重定向(两种写法)
response.setStatus(302);
response.setHeader("Location", "index.html");
response.sendRedirect("index.html");
请求转发和重定向的区别:
重定向地址栏发生变化,请求转发定地址栏没有变化
重定向需要向服务器发送两次请求,请求转发向服务器发送一次请求
重定向在客户端完成,请求转发在服务器完成
重定向速度慢,请求转发速度快
重定向可以跳转到任意路径,请求转发只能在跳转到本项目
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号