认识Servlet
来源:互联网 发布:淘宝开店最新流程ppt 编辑:程序博客网 时间:2024/06/10 03:55
说明
我们知道JSP编译后就是Servlet。由于Servlet是标准的Java类,页面的东西在里面开发较困难,自MVC规范出现后,Servlet便不再生成页面标签 ,也不再作为视图层使用,仅作为控制器使用。
开发Servlet步骤
1. 创建自定义Servlet类
- 让自定义的Servlet类继承HttpServlet并重写相关方法
- Servlet响应客户端的几种方法:
doGet:用于响应客户端的GET请求
doPost:用于响应客户端的POST请求
doPut:用于响应客户端的PUT请求
doDelete:用于响应客户端的DELETE请求
一般doGet与doPost方法要重写,如果重写了service()则能响应所有客户端的请求,这样就不必重写上面的方法了。service()方法等同于JSP生成的Servlet里的_jspService()方法。 - HttpServlet的init(ServletConfig config)方法
如果重写了该方法,则应在重写该方法的第一行调用super.init(config);访方法用于初始化Servlet资源。 - HttpServlet的destroy()方法
只有在销毁Servlet之前要先完成像关闭数据库连接这样的资源回收才需重写destroy()方法。
2.配置自定义Servlet类
两种方式:
1. Servlet3.0以后可使用@WebServlet注解配置
使用注解后不要在web.xml文件的根元素(<web-app...>
)中指定metadata-complete="true"
注解@WebServlet常用属性
2. 通过web.xml进行配置
<servlet> <!-- 指定servlet名字,相当于注解name属性 --> <servlet-name>test</servlet-name> <!-- Servlet实现类:自定义的Servlet --> <servlet-class>com.zrgk.servlet.MyServlet</servlet-class></servlet><servlet-mapping> <!-- 指Servlet名字 --> <servlet-name>test</servlet-name> <!-- Servlet映射URL,相当于注解里的urlPatterns或value属性 --> <url-pattern>/basic.do</url-pattern></servlet-mapping>
Servlet简单示例
//通过注解配置该Servlet@WebServlet(name="test",urlPatterns={"/basic.do"})public class TestServlet extends HttpServlet{ //使用该方法可响应客户端的所有请求 public void service(HttpServletRequest req, HttpServletResponse resp)throws IOException{ PrintStream out = new PrintStream(resp.getOutputStream()); out.print("1234567890");//向页面输出这串字符串 }}
Servlet与JSP的区别
- Servlet中没有内置对象,都必须显示创建,而JSP有9个内置对象。
- Servlet必须使用页面输出流逐行输出HTML标签。
JSP/Servlet的生命周期
- 客户端在第一次请求某个Servlet时创建Servlet实例
- Web容器调用Servlet的init方法,对Servlet初始化
- 在Servlet类里重写的方法里处理客户端请求
- 关闭Web应用销毁Servlet前,调用destroy方法进行资源回收。
创建web应用启动时就创建实例的Servlet
创建Servlet实例有两种情况,一种是应用启动时,另一种是用户请求时。
应用启动时就创建实例的Servlet有种实现方法:
1.通过@WebServlet的loadOnStartup属性指定,该属性值是整型,且值越小越优先实例化。代码如下:
//通过注解配置该Servlet@WebServlet(loadOnStartup=1)public class TestServlet extends HttpServlet{ //使用该方法可响应客户端的所有请求 public void init(ServletConfig config)throws ServletException{ super.init(config); System.out.println("后续处理省略...."); }}
2.通过web.xml配置实现,代码如下:
<servlet> <!-- 指定servlet名字 --> <servlet-name>startupServlet</servlet-name> <!-- Servlet实现类:自定义的Servlet --> <servlet-class>com.zrgk.servlet.MyServlet</servlet-class> <!-- 配置后Servlet在启动时就会创建实例了 --> <load-on-startup>1</load-on-startup></servlet>
*获取Servlet的配置参数
- 为配置Servlet参数有两种方式:
通过注解@WebServlet
里的initParams属性指定
通过在web.xml中的<servlet...>
元素中添加<init-param...>
子元素来指定 - 获取Servlet的配置参数
获取Servlet的配置参数,是通过ServletConfig对象完成的:
ServletConfig config = this.getServletConfig();
String key = config.getInitParameter(“配置参数的key名”); - 示例代码片:
@WebServlet(name="test", urlPatterns={"/basic.do"}, initParams={ @WebInitParam(name="userName",value="peter"), @WebInitParam(name="age",value="100") })public class TestServlet extends HttpServlet{ //使用该方法可响应客户端的所有请求 public void service(HttpServletRequest req, HttpServletResponse resp)throws IOException{ //获取config对象 ServletConfig config = this.getServletConfig(); //通过config对象获取Servlet的配置参数 String userName = config.getInitParameter("userName"); String age = config.getInitParameter("age"); //打印参数结果 System.out.println(userName+"="+age); PrintStream out = new PrintStream(resp.getOutputStream()); out.print("1234567890"); }}
以web.xml的配置方式的代码片:
<servlet> <servlet-name>test</servlet-name> <servlet-class>com.zrgk.servlet.TestServlet</servlet-class> <init-param> <param-name>userName</param-name> <param-value>peter</param-value> </init-param> <init-param> <param-name>age</param-name> <param-value>100</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>test</servlet-name> <url-pattern>/basic.do</url-pattern> </servlet-mapping>
1 0
- 认识servlet
- 认识servlet
- 认识Servlet
- 认识Servlet
- 认识Servlet
- 第一章 认识servlet
- Servlet的相关认识
- 重新认识Servlet
- Servlet认识一
- Servlet初步认识
- Servlet的认识
- 重新认识servlet
- JSP/Servlet认识
- Servlet的基本认识
- 认识servlet中的cookie
- servlet的认识--生命周期
- Servlet基本认识
- servlet之初认识
- HDU 1551 Cable master / UVALive 2452 Cable master(切电缆,二分)
- Ionic环境搭建
- Memcache的最佳实践方案
- laravel5数据库操作
- 什么东西只花十分钟,但是受益终身
- 认识Servlet
- tjut 4630
- MDK注释时用@使单词高亮
- BD___单例模式
- HDOJ-----4004二分
- HDU 1698 Just a Hook(线段树区间置换)
- Android打电话,发短信【JAVA】
- mysql生成不重复随机数(unique number generation)
- 第3章 开发支持