认识Servlet
2016-07-27 21:26
302 查看
说明
我们知道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常用属性
属性名 | 说明 |
---|---|
asyncSupported | 是否支持异步 |
display | 给Servlet指定显示名字 |
name | Servlet名字 |
initParams | 给Servlet配置参数 |
loadOnStartup | 将该Servlet配置成load-on-startup的Servlet |
urlPatterns/value | 指定访问该Servlet的URL,两个属性作用一样。 |
<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>
相关文章推荐
- JSP/PHP基于Ajax的分页功能实现
- 开发阶段Jetty运行Jsp报错且响应空白
- jsp简单实现页面之间共享信息的方法
- Apache Web让JSP“动”起来
- JSP学习经验小结分享
- JSP 多条SQL语句同时执行的方法
- jsp登录会话的简单实现
- 在jsp页面中响应速度提高的7种方法分享
- (jsp/html)网页上嵌入播放器(常用播放器代码整理)
- 使用JSP制作一个超简单的网页计算器的实例分享
- JSP上传excel及excel插入至数据库的方法
- 浅析JSP的9大内置对象和4大作用域对象
- JSP中文乱码常见3个例子及其解决方法
- jsp实现将动态网页转换成静态页面的方法
- JSP基于Bootstrap分页显示实例解析
- JSP避免Form重复提交的三种方案
- 纯jsp实现的倒计时动态显示效果完整代码