黑马程序员技术交流社区

标题: servlet快速入门 [打印本页]

作者: terminal    时间: 2019-6-13 18:16
标题: servlet快速入门
Tomcat
部署项目的三种方式
1.        直接将项目放到webapps目录下 (需要的是一个项目包不是一个文件)
2.        在config的xml文件中配置项目
3.        在catalina中创建任意名字的xml文件,docbace写项目路径,不用重启tomcat服务器

Servlet
体系结构
Servlet 接口 --- GenericServlet 抽象类 --- HttpServlet 抽象类       
GenericServlet 继承Servlet对接口的其他方法做了空实现,只将service()方法作为抽象
HttpServlet 继承GenericServlet 覆盖重写了service()方法,并在方法中调用doget(),dopost(),如果不在子类中重写,就会在浏览器中报405的异常

请求的格式
请求行 :请求方式 uri 协议
请求头
请求空行:
请求体:封装post的请求参数

Request
ServletRequest 接口 --继承-- HttpServletRequest 接口 --实现-- org.apache.catalina.
Connector.RequestFacade 类

请求行常用方法
getContextPath()获取虚拟目录
getRequestURI() 获取请求uri
getRequestURL() 获取请求url
请求头常用方法
getHeader(String name) 根据请求头名称获取请求头的值

常用通用方法
getParameter(String name) 根据参数名称获取参数值
Map<String,String[]> getParameterMap() 获取所有参数的map集合

转发和重定向
Forward  request.getRequestDispatcher(地址).forward(request,response)
转发是一次请求
转发只能访问内部服务器
转发地址栏不发生变化
Redirect response.sendRedirect(地址)
重定向是两次请求
重定向可以获取外部站点
重定向地址栏发生变化


文件真实路径的获取(利用反射和servletcontext)

获取value1  :this.getServletContext().getRealPath("/aaa.properties")
ServletDemo2.class.getClassLoader().getResourceAsStream("../../aaa.properties");
获取value2  :this.getServletContext().getRealPath("/WEB-INF/aaa.properties")
                ServletDemo2.class.getClassLoader().getResourceAsStream("../aaa.properties");
获取value3  :this.getServletContext().getRealPath("/WEB-INF/classes/aaa.properties")
ServletDemo2.class.getClassLoader().getResourceAsStream("aaa.properties");
获取value4  :
this.getServletContext().getRealPath("/WEB-INF/classes/cn/itcast/web/aaa.properties")
ServletDemo2.class.getClassLoader().getResourceAsStream("/cn/itcast/web/aaa.properties");
web项目的真实结构





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2