Servlet详解
2015-10-16 15:08
501 查看
Servlet
Servlet介绍: Servlet 用来开发动态的web资源的技术Servlet给予Request-Response,和Http一致
Sun公司给出了Servlet接口
Servlet快速入门
创建 Dynamic Web Project普通类继承于HttpServlet
在web.xml文件中配置虚拟访问路径
先配置一个servlet下的servlet-name,servlet-class
<servlet> <servlet-name>MyFirstServlet</servlet-name> <servlet-class>com.jack.servlet.MyFirstServlet</servlet-class> </servlet>
servlet-name配置的是任意名称
servlet-class配置的是对应的servlet类,也就是我们所编写的应用程序类
然后配置一个servlet-mapping下的servlet-name,url-pattern
<servlet-mapping> <servlet-name>MyFirstServlet</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
这里servlet-name与上面的配置对应servlet标签中的servlet-name对应,url-pattern对应到浏览器栏的访问地址
最后覆盖HttpServlet的doGet和doPost
Servlet的执行过程
首先提交路径在web.xml中对应的路径然后通过Servlet-name找到对应的Servlet-class也就是找到我们编写的程序
提交的方式中有get和post两种,在对应的Servlet类中找到doGet和doPost方法
Servlet编译和运行
通常我们使用的Java SE时,自动导入的jre下的lib下的rt.jar现在学习Java EE时,自动导入的Java EE 7 Library中存在Java ee.jar提供Servlet支持
开发时运行在Eclipse 中或MyEclipse中有javaee.jar,而Servlet运行在tomcat的环境中,在tomcat/lib/servlet-api.jar
servlet运行原理的剖析
自己编写的servlet中没有main,通过xml配置来获取类名,然后回调其中的doGet和doPost方法Servlet的声明周期
Servlet接口类–>实现类GenericServlet–>子类 HttpServlet接口–>自定义的类* 简化了servlet的开发
* Servlet接口提出,为了解决给予请求-响应模型数据处理
GenericServlet 实现接口Servlet接口,与协议无关
HttpServlet与Http协议相关的方法
这样即使后面出现了其他的协议,也可以不用改动上层
生命周期
init();//初始化
service(ServletRequest request,ServletResponse response);//服务
destory();//销毁
tomcat服务启动时,没有创建servlet对象
第一次访问,tomcat构造servlet对象,调用init,执行servlet
第二次以后访问tomcat不会创建对象,只会执行对应的service方法
destory方法是服务器正常关闭时调用
配置Servlet
启动配置
Servlet随着tomcat服务器启动时,进行初始化–《load-on-startup》《load-on-startup》参数可以是一个数字0-9代表的是服务器加载的优先级别 0 most high
典型应用:在tomcat启动时,想要通过servlet加载一些配置文件,配置随着服务器启动(Struct1)
Servlet配置
一个Servlet配置可以对应多个访问路径(可以配置多个url-pattern)web.xml中url的三种分配方式
完全路径匹配(以/开始) /hello , /init
目录匹配(以/开始) /,/abc/
扩展名匹配 (不能以/开头) *.do
Servlet作用
动态生成页面掌握servlet程序的编写
servlet中三个方法init();
service();
destory();
init(ServletConfig sc);
可以通过ServletConfig来获取Servlet的一些初始化参数
可以通过getServletConfig来获取对应的servlet中的ServletConfig对象获取初始化的参数init-param
ServletContext
每一个工程都会创建单独的ServletContext对象,这个对象代表当前工程全局配置以及全局处理,全局数据共享
只能通过ServletConfig来获取ServletContext对象
ServletContext的功能
获取web应用初始化参数context-param标签ServletContext对象实现数据共享
案例: 统计站点访问次数
ServletContext中可以通过设置setAttribute以及对应的getAttribute两种方法来设置网站的初始化访问次数和获取网站的访问次数
实现Servlet转发
案例: 统计字母出现的次数
//每个servlet都得写,或者说加载对应的次数
通过ServletContext对象读取资源文件
Servlet中获取资源,然而网站资源不一定在WebRoot下,我们一般都需要通过特殊的方法才能加载到对应的资源路径,不然访问不到对应的资源
Servlet中有两种获取资源的方法,我们可以通过ServletContext和虚拟路径去获取文件的真实路径,这样我们就可以实现对资源的读取了
另外一种方式,我们可以通过类的加载器去获取对应的资源,然后在获取对应的路径名,这个路径是绝对路径
在整个目录下我们需要通过对资源的访问,资源往往存在其他的目录下,所以我们需要通过获取绝对路径的方式才能获取到该资源
转发和重定向
转发产生一次请求,一次响应;重定向产生两次请求,两次响应转发对客户端来说是不可见的,重定向客户端可以察觉到
转发时,请求发送至服务器后,服务器中对应的Servlet程序对其进行处理,然后进行转发,最后处理该请求的可能就是另外的程序了,转发可以无数次重叠
重定向,请求发送至服务器后,服务器给定响应,响应头中包括302的状态码和Location的头信息,客户端通过Location头信息来进行下次请求,服务器对该次请求当然也得有响应
所以转发和重定向中请求和响应的次数不一致
遗漏点
java 编译带三方jar包的类 javac -classpath 路径 类java 编译带package的类 javac -d . 类
疑问
java 中多个文件的编译,是否可以向C语言中编写make命令一样,写成一个文件,然后执行该文件变可以编译整个文件相关文章推荐
- java-模拟tomcat服务器
- i-jetty环境搭配与编译
- 实现单Tomcat多Server配置
- 生产环境下的Tomcat配置
- Linux部署Tomcat服务器
- jenkins------结合maven将svn项目自动部署到tomcat下
- 如何搞定tomcat这只喵~
- 不落的太阳!体验一款源自Sun的开源OS
- tomcat在opensuse下开机自启失败的原因分析及解决方法
- Servlet与JSP间的两种传值情况
- JSP、Servlet中get请求和post请求的区别总结
- jsp项目中更改tomcat的默认index.jsp访问路径的方法
- Tomcat 多端口 多应用
- tomcat 5.0 + apache 2.0 完全安装步骤详解
- Tomcat安全设置 win2003 下tomcat权限限制
- Jsp和PHP共用80端口整合Apache和Tomcat(访问时无需加端口号)
- Tomcat服务器 安全设置第1/3页
- jsp和servlet的区别探讨