servlet
是一个小型java服务器 通常通过http接受和响应来自web的请求
实现servlet
要么实现servlet接口 要么继承GenericServlet,HttpServlet类
通过配置进行操作 在web项目中,web.xml里进行配置
servlet入门程序
1,创建一个类,让这个类实现GenericServlet类
2,实现类里面的 service(ServletRequest req, ServletResponse res)
ServletRequest代表请求
ServletResponse代表响应
3,使用ServletResponse向页面输出内容 getWriter()
4,在web项目中的web.xml进行配置,让服务器知道是一个servlet
*
servletDemo1
cn.itcast.servlet.ServletDemo1
servletDemo1
/hello
servlet的执行过程
1,根据在浏览器地址栏输入的地址 找web.xml中相同的url-pattern
2,找到了url-pattern 对应的servlet-name
3,根据找到的servlet-name到另外一个标签的(servlet)相同名称servlet-name
4,在servlet标签里面找到了相同名称的servlet-name,找servlet的包类路径servlet-class
利用反射原理,让servlet里面的service方法执行
servlet的生命周期
从创建到销毁
3个与生命周期有关的方法
1,init方法
servlet创建时执行一次 在第一次访问时创建
2,servlet方法
servlet在服务器启动时不会创建 在每次访问时执行多次
3,destory方法
servlet销毁时执行1次
servlet开发的细节问题
有参数的init()最终也要调用无参的init() 直接使用init()无参
在Httpservlet类里的servlet()和doxxx()的关系
提交的是get就调用get() 提交的是post就调用post()
一般在开发中 直接写deGet()和doPost()
创建时直接继承HttpServlet实现servlet
在servlet标签里写正整数
简化编程
无论什么提交方法都会执行 在doPost()调用doGet()
doGet(request,response);
url-pattern的配置
1,完全路径匹配
写法:/aa
2,目录匹配
写法:/aa/* (aa下所有项目)
3,扩展名匹配
写法:*.do
优先级 完全路径匹配>目录匹配>扩展名匹配
绝对路径
1,http://127.0.0.1/day07-3/path02/a.jpg
http://ip地址+端口号/文件的路径
2,直接写/项目名称/文件路径
重定向和转发
重定向:客户端
要请求两次 携带项目名称
转发:服务器端
请求一次 不需要携带项目名称
servletconfig
创建servletconfig对象
直接使用getServletconfig()
得到当前运行的servlet名称
获取初始化参数
在web.xml中配置初始化参数
在servlet标签里配置
servletContext对象
getServletContext()
获取全局的初始化参数
使用servletContext对象获取web项目中的资源
使用相对路径 路径是相对虚拟机的位置 在tomcat的bin里
传统的相对路径 不能读取web里的文件
文件放在src或包里面(WEB-INF)
getResourceAsStream("/项目名称 /文件路径")
getRealPath("/项目名称 /文件在tomcat的webapps下面的具体路径")
放到webroot下
getResourceAsStream("/项目名称")
注意:把文件放到webroot同级目录下 不会部署到tomcat中
getRealPath()得到文件的完全路径
/项目名称(文件在tomcat的webapps里面的具体路径)
和getResourceAsStream()类似
类加载器读取文件
读取的是classes里的文件
1,类名.class
2.对象.getClass()
3,Class.forName("包类路径")