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项目的真实结构
|
|