javaweb中servlet技术的用法
本篇文章和大家了解一下javaweb中servlet技术的用法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
Servlet
Servlet(Server Applet)是Java Servlet的简称。 是在服务器端执行的 , 用于响应客户端请求的Java类。HttpServlet 是使用java语言对http通信的实现。
Servlet声明
在 web.xml 中声明Servlet的请求url及对应的类路径 , 3.0版本后可以在类上使用 @WebServlet(“/test”) 注解来声明
servlet-class
: 内部地址路径
url-pattern
: 对外发布的名字
servlet-name
: 两者的对应
<servlet> <servlet-name>TestServlet</servlet-name> <servlet-class>com.yuan.servlet.TestServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>TestServlet</servlet-name> <url-pattern>/testServlet</url-pattern> </servlet-mapping>
Servlet生命周期
加载 : 在web.xml中声明Servlet相关信息
实例化 : 由WebServer( 如 : Tomcat )根据web.xml中声明信息进行实例化, 实例化后才能调用方法
第一种方式 : 第一次被请求时, 先实例化, 然后调用了 init() 方法进行初始化
第二种方式 : 在 web.xml 文件中在<servlet></servlet>
下加入 <load-on-startup>0</load-on-startup>
Web服务器启动时就会实例化
初始化 : 在init() 方法中,进行初始属性设置
服务 : 用户发请求后, 会调用 service(request, response) 方法, 请求/响应的信息由WebServer封装成HttpServletRequest / HttpServletResponse对象
销毁 : 当servlet被销毁时, 调用destroy()方法, 可以在这个方法中释放一些资源
垃圾回收 : 被JVM进行垃圾回收时, 调用 finalize() 方法
package com.yuan.servlet;import javax.servlet.ServletConfig;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;@WebServlet("/testServlet")public class TestServlet extends HttpServlet { @Override public void init(ServletConfig config) throws ServletException { // 初始化方法 } @Override protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // 服务方法 } @Override public void destroy() { //销毁方法 }}
请求方式
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。
一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。
GET/POST比较
GET一般用于获取/查询资源信息,而POST一般用于更新资源信息
默认方式 :
-GET 超链接, location.href, form表单 默认都是GET的
-POST 将 form表单的 method属性设置成 post, form通信转成POST方式
传值方式 :
-GET 数据会附在URL之后, 参数显示在地址栏。所以是明文传值
-POST 数据放置在HTTP包的包体中, 参数不在地址栏显示, 登录时要使用POST, 隐藏登录信息
传值大小:
-GET 1K~8K,受浏览器的影响, 通常为2K
-POST 理论上没有大小的限制, 所以做上传文件时, 由于文件的大小原因, 只能使用POST
中文传递 :
-GET 默认使用ISO-8859-1, 现在的浏览器都有优化
-POST 根据页面的中文编码设置, 服务器接值要转码
字符编码
GB2312编码
:1981年5月1日发布的简体中文汉字编码国家标准。GB2312对汉字采用双字节编码,收录7445个图形字符,其中包括6763个汉字。
BIG5编码
:台湾地区繁体中文标准字符集,采用双字节编码,共收录13053个中文字,1984年实施。
GBK编码
:1995年12月发布的汉字编码国家标准,是对GB2312编码的扩充,对汉字采用双字节编码。
GBK字符集共收录21003个汉字,包含国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字。
Unicode编码(UTF-8)
:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的文本信息转换。
u4e00-u9fa5 , 0x3400-0x4DB5 (中文)
两种转页
内部转 :
request.getRequestDispatcher( "目标页面" ) .forward( request, response );
跳转后浏览器地址栏不会变化
目标页面路径可以使用相对路径
使用这种方式跳转,传值可以使用三种方法:url中带parameter,session,request.setAttribute()
重定向 :
response.sendRedirect( request.getContextPath() + "目标页面" );
跳转后浏览器地址栏变化。
目标页面要使用绝对路径
这种方式要传值出去的话,只能在url中带parameter或者放在session中,无法使用request.setAttribute()来传递
三种容器
存储容器 : 是指用于在请求或转页过程中用来存储所在传递的参数值的对象
常用方法
// 添加属性.setAttribute(key, value)// 取属性值.getAttribute(key)// 移除属性.removeAttribute(key)
在Web项目中有三种容器, 因为它们的作用范围(生命周期)不同, 也叫三种作用域
其中 application 包含 多个session , session 包含多个 request
所以 从 request能得到session , 而从 request, session 能得到 application
request请求
类型 : HttpServletRequest
生命周期 : 客户端发起请求创建
遇到响应 Response 或者生成页面结束
常用方法 :
// 接页面传来的值String value = request.getParameter(key); //接一个值String[] vals = request.getParameterValues(key); //接一组值// 得到其它容器HttpSession session = request.getSession();ServletContext app = request.getServletContext();// 得到URL 信息StringBuffer url = request.getRequestURL();String scheme = request.getScheme();String serverName = request.getServerName();int serverPort = request.getServerPort();String uri = request.getRequestURI();String cpath = request.getContextPath(); // 得到绝对路径String servletUrl = request.getServletPath(); // 被请求servletString remoteAddr = request.getRemoteAddr(); // 得到客户端IP
session请求
类型 : HttpSession
生命周期 : 浏览器与服务器建立通信开始
主动关闭或长时间不与服务器通信结束
常用方法 :
// 取session 的 标识 idString sid = session.getId();// 获取最长等待时间int max = session.getMaxInactiveInterval();// 设置最长等待时间, 以秒为单位session.setMaxInactiveInterval(len);// 取所属的上下文ServletContext app = session.getServletContext();
在 web.xml中也可以设置最长等待时间, 单位是分钟
<session-config> <session-timeout>30</session-timeout> </session-config>
application上下文(全局)
类型 : ServletContext
生命周期 : 项目启动创建
项目关闭结束
常用方法 :
// 取项目的真实路径(发布路径)String path = app.getRealPath(path);// 取 web.xml 中设置的参数String pv = app.getInitParameter(paramName);
在web.xml 里信息可以被application获取
<context-param> <param-name>paramName</param-name> <param-value>paramValue</param-value> </context-param>
ServletConfig设置对象
在 Servlet的init() 初始化方法传入参数 ServletConfig
public void init(ServletConfig config) throws ServletException { // 取web.xml 文件中在<servlet></servlet>下的信息String icon = config.getInitParameter(configName);// 取所属的上下文ServletContext app = config.getServletContext();}
在web.xml 文件中在下的信息
<servlet> <init-param> <param-name>configName</param-name> <param-value>configValue</param-value> </init-param> <servlet-name>TestServlet</servlet-name> <servlet-class>com.yuan.servlet.TestServlet</servlet-class> </servlet>
以上就是javaweb中servlet技术的用法的简略介绍,当然详细使用上面的不同还得要大家自己使用过才领会。如果想了解更多,欢迎关注编程网行业资讯频道哦!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341