java web 基础servlet

目录

get:  请求  ​

POST:请求

web服务器tomcat

tomcat目录结构

如何在tomcat服务器上进行项目的部署

在IDEA开发工具中集成Tomcat的操作实现项目的快速部署

 java web项目的目录结构认识:

 Servlet

web.xml

servlet访问的步骤​​​

Servlet的开发步骤:

servlet实例配置的第二种方式:使用@WebServlet注解进行配置

两种配置方式的比较:

servlet的访问过程

1.请求首先到达tomcat服务器

2.tomcat服务器从请求的行中获取请求的资源路径 /hello/my tomcat就知道浏览

3.tomcat服务器根据项目名去加载项目对应的核心配置文件web.xml并对该文件进行

4.根据解析后的结果确定当前请求应该由哪个servlet进行出来 /my----->MyServlet

5.创建一个MyServlet实例对象,

6.请求处理完成后一定要在servlet中给客户端浏览器一个响应的结果,这个响应过程

通过注解配置servlet:坏处:和代码耦合度高一些

一个web工程中包含的资源类型 

资源类型有两种:1.web目录下的静态资源 html css js img... 2.动态资源

 web.xml文件对静态资源的配置  url为/​

无论是静态资源还是动态资源,都是由servlet执行;


B/S结构browser server:浏览器服务器架构

web :工作模式请求request 处理 响应response

网络上两台计算机相互通信;

  • 通信一定要遵循标准通信协议,才能实现双方有效沟通

HTTP协议:

  • 规范了客户端浏览器和java应用程序的传输数据格式
  • 主要有两个格式:
    • 请求数据包格式
    • 响应数据包格式
  • 前端:提交
  • 后台:接收

HTTP请求:按照http协议请求发送的字符串 网络上传输的是字节流;

需要转换为字符流

GET和POST :请求的提交方式; GET长度有限制,明文提交不安全 ,不能提交文件

get:  请求  

POST:请求

  • HTTP/1.1:请求行的使用协议版本 
  • post提交:以请求主体的方式提交 
  • get提交:在url后面
  • 空行:分隔符

响应请求:  

  • java客户端->后台->响应-> (严格遵循http协议格式)

响应行:三部分: 用空格隔开

  • 1.使用协议版本:http/1.1
    • 2.响应状态码 :200:成功   404:找不到资源   500:发生了异常
  • 3.响应状态文字:200->ok   404->not found   500->internal error

响应头信息:服务器发给浏览器

和请求头信息一样;key:value的格式

空格:分隔符:间隔响应头和响应主题信息

响应主题内容:真正发送的主题内容

web服务器tomcat

  • tomcat 基于java语言开发运行需要jdk  tomcat和jdk版本对应

tomcat目录结构

  • bin: startup.bat  可执行的二进制文件     
    • shutdown.bat
  • conf: config :tomcat 配置文件 
    • server.xml :服务器自身核心配置文件 
    • web.xml:服务器部署的全局项目配置文件
  • lib:tomcat 本身运行所依赖的jar包
  • logs:运行的日志文件
  • webapps:放置 web项目
  • work   :tomcat工作目录:放置jsp解析后的结果

如何在tomcat服务器上进行项目的部署

我们可以将 tomcat 看成是一个网络应用程序的部署容器,一个 JAVA WEB 项目要想被
用户通过浏览器访问需要将项目部署到 tomcat

IDEA开发工具中集成Tomcat的操作实现项目的快速部署

 

 

 java web项目的目录结构认识:

 

 

 

所有的项目代码放到web目录下; jar包放在web-inf下的lib包

 

配置tomcat服务自动更新

 Servlet

  • 服务端小程序,用JAVA语言编写并可以部署在tomcat服务器中能够对客户端浏览器
        发送的请求进行处理
  • Servlet本质上就是一个JAVA类,但是因为这种类将来需要部署到服务器环境对客户
        端请求进行处理,因此这个类的编写需要遵循接口的规范
  • Servlet就是一个接口规范
  • servlet读取xml配置文件
  • web.xml

    • <servlet>
          <!--        完成servlet注册-->
          <servlet-name>myServlet</servlet-name>
          <servlet-class>com.zdq.myServlet</servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>myServlet</servlet-name>
          <url-pattern>/my</url-pattern>
          <!--        url是浏览器的访问位置-->
      </servlet-mapping>
  • servlet访问的步骤

  • 前端输入数据;回车之后向服务器发送get请求 ;
    • tomcat获取到请求行  :/hello/my?username=zhangsan&password=123
    • 解析web.xml ->  获取到my->访问指定的servlet
    • new一个servlet对象;将请求头赋给servlet的request对象 

Servlet的开发步骤:

第一步:在 src 目录中创建一个 class
第二步:实现 Servlet 接口
第三步:重写接口中的 service 方法,这个方法就是接收客户端请求的核心方法
第四步:在项目的核心配置文件 web.xml 中完成 servlet 的注册和配置
<servlet> <servlet-name>MyServlet</servlet-name>
 <servlet-class>com.qf.MyServlet</servlet-class> 
</servlet> <servlet-mapping>
 <servlet-name>MyServlet</servlet-name> 
<url-pattern>/my</url-pattern>
 </servlet-mapping> 
//servlet-name的名字必须一样 url-pattern是用来配置当前servlet在浏览器端的访问路径

servlet实例配置的第二种方式:使用@WebServlet注解进行配置

@WebServlet("/my2")

两种配置方式的比较:

1.注解配置的优势就是简洁 不好的地方是配置的信息和java源码耦合在一起
2.xml的方式配置比较麻烦,好处是和JAVA源码进行了分离,将来配置的变化不会影
响到JAVA程序

servlet的访问过程

1.请求首先到达tomcat服务器

2.tomcat服务器从请求的行中获取请求的资源路径 /hello/my   tomcat就知道浏览

器要访问的是 hello 这个项目中的 /my 资源(web.xml

3.tomcat服务器根据项目名去加载项目对应的核心配置文件web.xml并对该文件进行

解析,解析之后就形成了一张请求处理的映射表

4.根据解析后的结果确定当前请求应该由哪个servlet进行出来 /my----->MyServlet

5.创建一个MyServlet实例对象

        并由tomcat 主动调用调用 servlet 实例对象的 service
方法完成请求的处理,在调用 service 方法的过程中 tomcat 还干了一件事:对请求的
原生数据报文(字符串)进行拆解,并将拆解出来的信息(请求行 请求的头信息
求的主体信息)封装到一个 Request 的对象中,我们开发人员只需要调用 request
象的相关方法来获取请求的信息;request就可以获取前端输入的数据了

6.请求处理完成后一定要在servlet中给客户端浏览器一个响应的结果,这个响应过程

需要通过另一个对象Response 对象完成

通过注解配置servlet:坏处:和代码耦合度高一些

  • //注解servlet
    @WebServlet("/my")
    //默认是value=   是字符串数组;可以注解多个    ({"my","my2","my3"})
  • public class myServlet implements Servlet{

一个web工程中包含的资源类型 

资源类型有两种:1.web目录下的静态资源 html css js img... 2.动态资源

Servlet 如果请求的是一个静态资源,tomcat 服务器如何处理?

org.apache.catalina.servlets.DefaultServlet:是apache提供好的专门用来处理静

态资源的servlet 

在tomcat conf 有一个web.xml文件,专门有配置处理静态资源,通过流输出给浏览器

 web.xml文件对静态资源的配置  url为/

  • 无论是静态资源还是动态资源,都是由servlet执行;

  • 静态资源会被.DefaultServlet执行
    • <servlet-mapping>
      <servlet-name> default </servlet-name>
      <url-pattern> / </url-pattern>
      </servlet-mapping>
    • //缺省配置;没有针对当前配置的servlet就都是defaultservlet
  • 对于html静态文件的处理过程对于任何项目来说都应该是一样(直接读取这个html 文件的内容并响应给浏览器即可),因此tomcat中提供了一个DefaultServlet专门处 理静态资源

servlet的生命周期

  • servlet本身也是一个对象;由tomcat容器创建
  • servlet在第一次访问时创建;并且只会创建一次;(单例模式) 
    • server(,)每次有请求都会创建 (多线程)
    • 由tomcat自动完成
    • init( )//初始化servlet方法,只会创建一次;
  • servlet实例全局共享;所以一般不在servlet写成员变量
  • destory()关闭tomcat服务器时做关键信息的输出;和数据保存
  • servlet在第一次被访问时才会创建对象;想要tomcat创建时启动;就需要在当前servlet.java里配置

httpServlet

  • 写法:

public class myServlet extends HttpServlet {//httpservlet继承 GenericServlet 实现了Servlet
    @Override//req继承自ServletRequest resp继承自 ServletResponse
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
//        resp.setCharacterEncoding("utf-8");
        System.out.println("------------------------------------------------------获取到前端的字符串");
        String username = req.getParameter("username");

            String password = req.getParameter("password");
            service addService = new serviceImpl();
            addService.addUser(username, password);
            resp.getWriter().write("这是中文");
            System.out.println(username + password);
    }
  •  虽然看上去是doGet()在处理请求;但实际上是service在处理前端的请求;
  • 继承HttpServlet的好处
    • 不需要强制重写Servlet的所有方法;
    • 实际上:
      myServlet extends HttpServlet 
      extends GenericServlet
      implements Servlet

 doGet的参数:处理get请求

  • doGet(HttpServletRequest req, HttpServletResponse resp)
    • req继承自ServletRequest resp继承自 ServletResponse

doPost:处理post请求

  • doPost(HttpServletRequest req, HttpServletResponse resp)

目前浏览器支持的提交方式

浏览器请求服务器的几种方式

  • 直接在地址栏输入url  回车直接发送GET请求
  • a标签完成服务器资源请求;也是get请求
    • <a href="/day41/test?name=list"></a>
  • 使用表单请求服务器; 可以发送get和post请求  取决于form的method
    • <form action="/day41/test" method="post"></form>
  • 普通的button 的onclick事件  传一个function() get请求
  • 使用img标签 设置src属性; 发送get请求
    • img的src在页面一加载就出现了 
  • link 标签的href 标签
  • script标签
  • 使用ajax技术实现异步请求web服务器  其他的都是同步提交
  • 304表示本地的静态缓存文件

request和respond对象常用方法、

  • request对象的常用的方法介绍
    • getParameter(“name”):根据参数名获取提交过来的参数值 返回一个String
    • post提交的中文乱码问题处理:request.setCharacterEncoding(“utf-8”);

    • 2.getParameterValues(“name”):根据参数名获取多个参数值,返回一个String数组 主要针对复选框

  • 获取请求行的信息

    • String method = request.getMethod();

    • System.out.println("method = " + method);

    • String uri = request.getRequestURI();

    • System.out.println("uri = " + uri);//相对路径

    • StringBuffer url = request.getRequestURL();

    • System.out.println("url = " + url);//完整的绝对路径

  • //获取请求的头信息

    • key:value String host = request.getHeader("Host");

    • System.out.println("host = " + host);

  • response对象:用来给客户端浏览器一个响应
    • response.setHeader("Content-Type","text/html;charset=utf-8");//设置响应的头信息
      PrintWriter writer = response.getWriter();
      //调用response对象的相关方法设置响应头信息
      
      writer.write("<h1>你好浏览器!</h1>");
      

      乱码解决

      • 1:post方式提交乱码(即控制台) req.setCharacterEncoding("utf-8");
      • 2:网页输出乱码 resp.setHeader("Content-Type","text/html;charset=utf-8"); resp.setHeader("Content-Type","text/plan;charset=utf-8");

 servlet应用于三层的实例

  • 三层:dao :做数据访问  service 服务层 web层:与前段做交互层
  • servlet是一个纯ui技术;只负责ui相关工作
  • 在web项目中lib目录放到WEB-INF中

  • 在servle类中只能完成下列工作:

    • 1.接收客户端浏览器的请求

    • 2.从请求中获取请求的参数

    • 3.调用业务方法进行功能的处理

    • 4.将业务处理的结果通过response对象响应给客户端浏览器

    • 在服务端程序中凡是涉及到对服务器磁盘文件的IO操作,必须提供文件的绝对路径

项目部署目录

  • out目录:是部署项目目录;
    • web目录下有所有的静态资源;
    • src目录下是所有的java.class文件
    • resources目录参与项目部署
  • 相对路径转绝对路径的方式

 1:定义一个相对路径 注:此处的相对路径是我们运行后的out部署目录下的相对路径:见下图
            String relativePath="/WEB-INF/test.html";	
//此处是将网页文件放到WEB-INF目录下后的部署文件的相对路径

         2:调用 getServletContext() 方法,此方法每个servlet都可以调用
            //  此方法用于获取一个 servlet 的上下文对象;
这个上下文对象对于整个项目来说,全局只有一份
            //  它实在  tomcat  启动时立马创建的
            //  该对象中提供了一个   context.getRealPath
(传一个相对路径)  方法,用于将   相对路径转绝对路径
            ServletContext context = this.getServletContext();
            String realPath = context.getRealPath(relativePath);
//传一个相对路径,返回一个绝对路径
            //System.out.println(realPath);  //  结果:绝对路径:D:\idea\ideaWork\day42\out\artifacts\day42_war_exploded\test.html

            3:通过获取的绝对路径读取网页信息
      BufferedReader reader=new BufferedReader(new InputStreamReader
(new FileInputStream(realPath),"utf-8"));
            StringBuffer sb=new StringBuffer();
            String line="";
            while ((line=reader.readLine())!=null){
                sb.append(line);
            }
            String html=sb.toString();
      html=html.replace("{{errorInfo}}","账户或密码错误!");
            resp.getWriter().write(html);
        }

 servlet层:

package com.qf.web;


//负责接收用户的登录请求(POST)
@WebServlet("/login")
public class UserLoginServlet extends HttpServlet {
    //不存在多线程安全问题
    private UserService service= new UserServiceImpl();

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
        response.setHeader("Content-Type","text/html;charset=utf-8");
        //处理用户的第一次登录
        String relativePath="/WEB-INF/login.html";
        ServletContext context = this.getServletContext();
        //这个对象全局只有一份;在tomcat启动时创建;
        //上下文对象中提供了一个方法可以用于相对路径转绝对路径的一个方法getRealPath
        String realPath = context.getRealPath(relativePath);
        BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(realPath),"utf-8"));

        StringBuffer sb=new StringBuffer("");
        String line="";
        while((line=reader.readLine())!=null){
            sb.append(line);
        }
        String html=sb.toString();
        html=html.replace("{{errorInfo}}","");
        response.getWriter().write(html);

    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.获取请求的参数
        String username = request.getParameter("username");
        String password=request.getParameter("password");
        //2.调用业务方法
        boolean flag = service.checkUserLogin(new User( username, password));
        //3.根据业务处理的结果进行响应
        response.setHeader("Content-Type","text/html;charset=utf-8");
        //以网页输出
        if(flag){
            response.getWriter().write("登录成功!");
        }else{
            //登录失败
            //给浏览器响应一个网页(String)
//            String html="<!DOCTYPE html>\n" +
//                    "<html lang=\"en\">\n" +
//                    "<head>\n" +
//                    "    <meta charset=\"UTF-8\">\n" +
//                    "    <title>系统登录</title>\n" +
//                    "</head>\n" +
//                    "<body>\n" +
//                    "   <form action=\"/web/login\" method=\"post\">\n" +
//                    "        <table>\n" +
//                    "            <tr>\n" +
//                    "                <td>账号:</td>\n" +
//                    "                <td><input name=\"username\"></td>\n" +
//                    "            </tr>\n" +
//                    "            <tr>\n" +
//                    "                <td>密码:</td>\n" +
//                    "                <td><input type=\"password\" name=\"password\"></td>\n" +
//                    "            </tr>\n" +
//                    "            <tr>\n" +
//                    "                <td><input type=\"submit\" value=\"登录\"></td>\n" +
//                    "                <td style=\"color:red\">用户名或密码错误!</td>\n" +
//                    "            </tr>\n" +
//                    "        </table>\n" +
//                    "   </form>\n" +
//                    "</body>\n" +
//                    "</html>";

            //使用IO流技术从磁盘上直接读取login.html中的文本内容

            //相对路径转绝对路径

            String relativePath="/WEB-INF/login.html";
            //每个servlet中都可以调用getServletContext()方法获取到一个servlet上下文对象
            //这个对象对于整个项目来说全局只有一份,在tomcat一启动的时候立马创建
            //上下文对象中提供了一个方法可以用于相对路径转绝对路径的一个方法getRealPath


            ServletContext context = this.getServletContext();//获取到一个servlet上下文对象
            //这个对象全局只有一份;在tomcat启动时创建;
            //上下文对象中提供了一个方法可以用于相对路径转绝对路径的一个方法getRealPath
            String realPath = context.getRealPath(relativePath);

            //System.out.println(realPath);


            BufferedReader reader=new BufferedReader(new InputStreamReader(new FileInputStream(realPath),"utf-8"));
            //System.out.println(reader);

           StringBuffer sb=new StringBuffer("");
           String line="";
           while((line=reader.readLine())!=null){
               sb.append(line);
           }
           String html=sb.toString();
           html=html.replace("{{errorInfo}}","账号或密码错误!");
           response.getWriter().write(html);



        }



    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目录 前言 ............................... 3 其他资料 ............................................................................................................................................................3 谁应该读此规范 ................................................................................................................................................3 API 规范 ............................................................................................................................................................3 其他的 Java 平台规范 .......................................................................................................................................3 其他重要参考资料 ............................................................................................................................................4 提供反馈 ............................................................................................................................................................4 专家组成员 ........................................................................................................................................................5 答谢 ....................................................................................................................................................................5 目录 ............................... 6 概览 .............................. 13 1.1 什么是 Servlet? ..................................................................................................................................13 1.2 什么是 Servlet 容器?...............................................................................................................................13 1.3 例子 ...........................................................................................................................................................13 1.4 Servlet 与其他技术的比较 ........................................................................................................................14 1.5 与 Java 平台企业版的关系 ......................................................................................................................14 1.6 与 Java Servlet 规范 2.5 版本间的兼容性 ..............................................................................................14 1.6.1 监听器(Listener)顺序 ...............................................................................................................14 1.6.2 注解处理 .........................................................................................................................................14 Servlet 接口 ...................... 15 2.1 请求处理方法 ...........................................................................................................................................15 2.1.1 基于 Http 规范的请求处理方法 ...................................................................................................15 2.1.2 附加的方法 ....................................................................................................................................15 2.1.3 有条件 GET 支持 ..........................................................................................................................16 2.2 实例数量 ...................................................................................................................................................16 2.2.1 关于 Single Thread Model..............................................................................................................16 2.3 Servlet 生命周期 .......................................................................................................................................16 2.3.1 加载和实例化 ................................................................................................................................16 2.3.2 初始化 ............................................................................................................................................16 2.3.3 请求处理 ........................................................................................................................................17 2.3.4 终止服务(End of Service) .........................................................................................................27 Request ........................... 29 3.1 HTTP 协议参数 .........................................................................................................................................29 3.1.1 当参数可用时 ................................................................................................................................29 3.2 文件上传 ....................................................................................................................................................30 3.3 属性 ...........................................................................................................................................................30 3.4 头 ...............................................................................................................................................................30 3.5 请求路径元素 ...........................................................................................................................................31 3.6 路径转换方法 ...........................................................................................................................................32 7 3.7 非阻塞 IO...................................................................................................................................................32 3.8 Cookies........................................................................................................................................................33 3.9 SSL 属性 ....................................................................................................................................................33 3.10 国际化 .....................................................................................................................................................34 3.11 请求数据编码 .........................................................................................................................................34 3.12 Request 对象的生命周期 ........................................................................................................................34 Servlet Context ................... 35 4.1 ServletContext 接口介绍 ...........................................................................................................................35 4.2 ServletContext 接口作用范围 ...................................................................................................................35 4.3 初始化参数 ...............................................................................................................................................35 4.4 配置方法 ...................................................................................................................................................35 4.4.1 编程式添加和配置 Servlet.............................................................................................................36 4.4.2 编程式添加和配置 Filter ...............................................................................................................36 4.4.3 编程式添加和配置 Listener............................................................................................................37 4.5 上下文属性 ...............................................................................................................................................39 4.6 资源 ...........................................................................................................................................................39 4.7 多主机和 Servlet 上下文 ..........................................................................................................................40 4.8 Reload 注意事项 .......................................................................................................................................40 4.8.1 临时工作目录 ................................................................................................................................40 Response .......................... 41 5.1 缓冲 ...........................................................................................................................................................41 5.2 头信息 .......................................................................................................................................................41 5.3 非阻塞 IO...................................................................................................................................................42 5.4 简便方法 ...................................................................................................................................................43 5.5 国际化 .......................................................................................................................................................43 5.6 结束响应对象 ...........................................................................................................................................44 5.7 Response 的生命周期 ................................................................................................................................44 过滤器 ............................ 45 6.1 什么是过滤器 ...........................................................................................................................................45 6.1.1 过滤器组件示例 ............................................................................................................................45 6.2 主要概念 ...................................................................................................................................................46 6.2.1 过滤器生命周期 ............................................................................................................................46 6.2.2 包装请求和响应 ............................................................................................................................47 6.2.3 过滤器环境 ....................................................................................................................................47 6.2.4 在 Web 应用中配置过滤器 ...........................................................................................................47 6.2.5 过滤器和 RequestDispatcher..........................................................................................................49 会话 .............................. 51 7.1 会话跟踪机制 ...........................................................................................................................................51 7.1.1 Cookies.............................................................................................................................................51 7.1.2 SSL 会话 .........................................................................................................................................51 7.1.3 URL 重写 .......................................................................................................................................51 7.1.4 会话完整性 ....................................................................................................................................52 7.2 创建会话 ...................................................................................................................................................52 8 7.3 会话范围 ...................................................................................................................................................52 7.4 绑定 Session 属性 .....................................................................................................................................52 7.5 会话超时 ...................................................................................................................................................53 7.6 最后访问时间 ...........................................................................................................................................53 7.7 重要的会话语义 .......................................................................................................................................53 7.7.1 多线程问题 ....................................................................................................................................53 7.7.2 分布式环境 ....................................................................................................................................53 7.7.3 客户端语义 ....................................................................................................................................54 注解和可插拔性 .................... 55 8.1 注解和可插拔性 .......................................................................................................................................55 8.1.1 @WebServlet....................................................................................................................................55 8.1.2 @WebFilter ......................................................................................................................................56 8.1.3 @WebInitParam ...............................................................................................................................56 8.1.4 @WebListener..................................................................................................................................56 8.1.5 @MultipartConfig............................................................................................................................57 8.1.6 其他注解/惯例 ...............................................................................................................................57 8.2 可插拔性 ...................................................................................................................................................57 8.2.1 web.xml 模块 ..................................................................................................................................57 8.2.2 web.xml 和 web-fragment.xml 顺序 ..............................................................................................58 8.2.3 装配 web.xml、web-fragment.xml 描述符和注解 .......................................................................63 8.2.4 共享库 / 运行时可插拔性 ...........................................................................................................72 8.3 JSP 容器可插拔性 .....................................................................................................................................74 8.4 处理注解和 fragment ................................................................................................................................74 分派请求 .......................... 75 9.1 获得一个 RequestDispatcher.....................................................................................................................75 9.1.1 请求调度器路径中的查询字符串 ................................................................................................75 9.2 请求调度器的使用 ...................................................................................................................................75 9.3 Include 方法 ...............................................................................................................................................76 9.3.1 内置请求参数 ................................................................................................................................76 9.4 Forward 方法 .............................................................................................................................................76 9.4.1 查询字符串 ....................................................................................................................................77 9.4.2 转发的请求参数 ............................................................................................................................77 9.5 错误处理 ...................................................................................................................................................77 9.6 获得一个异步上下文对象 .......................................................................................................................77 9.7 Dispatch 方法 .............................................................................................................................................78 9.7.1 查询字符串 ....................................................................................................................................78 9.7.2 调度请求参数 ................................................................................................................................78 Web 应用 .......................... 80 10.1 Web 服务器中的 Web 应用程序 .............................................................................................................80 10.2 与 ServletContext 的关系 .......................................................................................................................80 10.3 Web 应用的要素 ......................................................................................................................................80 10.4 部署层次结构 .........................................................................................................................................80 10.5 目录结构 .................................................................................................................................................80 9 10.5.1 应用程序目录结构示例 ......................................................................................................................81 10.6 Web 应用程序归档文件 ..........................................................................................................................82 10.7 Web 应用程序部署描述文件 ..................................................................................................................82 10.7.1 扩展的依赖关系 ..........................................................................................................................82 10.7.2 Web 应用程序类加载器 ...............................................................................................................83 10.8 更新 Web 应用 ........................................................................................................................................83 10.9 错误处理 .................................................................................................................................................83 10.9.1 请求属性 ......................................................................................................................................83 10.9.2 错误页面 ......................................................................................................................................84 10.9.3 错误过滤器 ..................................................................................................................................85 10.10 欢迎文件 ...............................................................................................................................................85 10.11 Web 应用程序环境 ................................................................................................................................86 10.12 Web 应用程序部署 ................................................................................................................................86 10.13 包含 web.xml 部署描述文件 ...............................................................................................................86 应用生命周期事件 .................. 87 11.1 介绍 .........................................................................................................................................................87 11.2 事件监听器 .............................................................................................................................................87 11.2.1 事件类型和监听器接口 ..............................................................................................................87 11.2.2 监听器使用的一个例子 ..............................................................................................................88 11.3 监听器类配置 .........................................................................................................................................88 11.3.1 提供监听器类 ..............................................................................................................................88 11.3.2 部署声明 ......................................................................................................................................88 11.3.3 监听器注册 ..................................................................................................................................89 11.3.4 关闭时通知 ..................................................................................................................................89 11.4 部署描述符示例 .....................................................................................................................................89 11.5 监听器实例和线程 .................................................................................................................................90 11.6 监听器异常 .............................................................................................................................................90 11.7 分布式容器 .............................................................................................................................................90 11.8 会话事件 .................................................................................................................................................90 映射请求Servlet................. 91 12.1 使用 URL 路径 .......................................................................................................................................91 12.2 映射规范 .................................................................................................................................................91 12.2.1 隐式映射 ......................................................................................................................................91 12.2.2 示例映射集合 ..............................................................................................................................92 安全 .............................. 93 13.1 介绍 .........................................................................................................................................................93 13.2 声明式安全 .............................................................................................................................................93 13.3 编程式安全 .............................................................................................................................................93 13.4 编程式安全策略配置 .............................................................................................................................94 13.4.1 @ServletSecurity 注解 ..................................................................................................................95 13.4.2 ServletRegistration.Dynamic 的 setServletSecurity.....................................................................101 13.5 角色 .......................................................................................................................................................101 13.6 认证 .......................................................................................................................................................102 10 13.6.1 HTTP 基本认证 ..........................................................................................................................102 13.6.2 HTTP 摘要认证 ..........................................................................................................................102 13.6.3 基于表单的认证 .........................................................................................................................102 13.6.4 HTTPS 客户端认证 ....................................................................................................................104 13.6.5 其他容器认证机制 ....................................................................................................................104 13.7 服务器跟踪认证信息 ...........................................................................................................................104 13.8 指定安全约束 .......................................................................................................................................104 13.8.1 组合约束 ....................................................................................................................................105 13.8.2 示例 ............................................................................................................................................105 13.8.3 处理请求 ....................................................................................................................................107 13.8.4 未覆盖的 HTTP 协议方法 ........................................................................................................107 13.9 默认策略 ...............................................................................................................................................109 13.10 登录和退出 ......................................................................................................................................... 110 部署描述文件 ..................... 111 14.1 部署描述文件元素 ............................................................................................................................... 111 14.2 部署描述符处理规则 ........................................................................................................................... 111 14.3 部署描述文件 ....................................................................................................................................... 112 14.4 部署描述文件图解 ............................................................................................................................... 112 1、web-app 元素 ................................................................................................................................... 112 2、description 元素 ............................................................................................................................... 113 3、display-name 元素 ........................................................................................................................... 113 4、icon 元素 .......................................................................................................................................... 114 5、distributable 元素 ............................................................................................................................. 114 6、context-param 元素 .......................................................................................................................... 114 7、filter 元素 ......................................................................................................................................... 114 8、filter-mapping 元素 .......................................................................................................................... 115 9、listener 元素 ..................................................................................................................................... 116 10、servlet 元素 .................................................................................................................................... 116 11、servlet-mapping 元素 ..................................................................................................................... 117 12、session-config 元素 ........................................................................................................................ 118 13、mime-mapping 元素 ...................................................................................................................... 118 14、welcome-file-list 元素 .................................................................................................................... 119 15、error-page 元素 .............................................................................................................................. 119 16、jsp-config 元素 ............................................................................................................................... 119 17、security-constraint 元素 .................................................................................................................120 18、login-config 元素 ...........................................................................................................................121 19、security-role 元素 ...........................................................................................................................121 20、env-entry 元素 ................................................................................................................................122 21、ejb-ref 元素 ....................................................................................................................................123 22、ejb-local-ref 元素 ...........................................................................................................................124 23、service-ref 元素 ..............................................................................................................................125 24、resource-ref 元素 ............................................................................................................................126 25、resource-env-ref 元素 ....................................................................................................................127 26、message-destination-ref 元素 .........................................................................................................128 27、message-destination 元素 ..............................................................................................................129 11 28、locale-encoding-mapping-list 元素 ................................................................................................130 14.5 实例 .......................................................................................................................................................131 14.5.1 一个简单的例子 ........................................................................................................................131 14.5.2 安全示例 ....................................................................................................................................132 15.与其它规范有关的要求 .......... 135 15.1 会话 .......................................................................................................................................................135 15.2 Web 应用程序 ........................................................................................................................................135 15.2.1 Web 应用程序类加载器 .............................................................................................................135 15.2.2 Web 应用程序环境 .....................................................................................................................135 15.2.3 Web 模块上下文根 URL 的 JNDI 名称 ....................................................................................136 15.3 安全性 ...................................................................................................................................................136 15.3.1 EJB™调用传播的安全标识 ......................................................................................................137 15.3.2 容器授权的要求 ........................................................................................................................137 15.3.3 容器认证的要求 ........................................................................................................................137 15.4 部署 .......................................................................................................................................................137 15.4.1 部署描述符元素 ........................................................................................................................137 15.4.2 打包和 JAX-WS 组件部署 .......................................................................................................138 15.4.3 处理部署描述符的规则 ............................................................................................................138 15.5 注解和资源注入 ...................................................................................................................................139 15.5.1 @DeclareRoles.............................................................................................................................140 15.5.2 @EJB 注解 ................................................................................................................................140 15.5.3 @EJBs 注解 ...............................................................................................................................141 15.5.4 @Resource 注解 ........................................................................................................................141 15.5.5 @PersistenceContext 注解 .........................................................................................................142 15.5.6 @PersistenceContexts 注解 .......................................................................................................142 15.5.7 @PersistenceUnit 注解 ..............................................................................................................142 15.5.8 @PersistenceUnits Annotation.....................................................................................................142 15.5.9 @PostConstruct 注解 .................................................................................................................142 15.5.10 @PreDestroy 注解 ...................................................................................................................143 15.5.11 @Resources 注解 .....................................................................................................................143 15.5.12 @RunAs 注解 ..........................................................................................................................144 15.5.13 @WebServiceRef 注解 ............................................................................................................144 15.5.14 @WebServiceRefs 注解 ...........................................................................................................145 15.5.15 JavaEE 要求的上下文和依赖注入 ..........................................................................................145 变更历史 ......................... 146 A.1 自 Servlet3.0 以后的变更 ......................................................................................................................146 A.2 自 Servlet 3.0 Proposed Final Draft 以后的变更 ..................................................................................147 A.3 自 Servlet 3.0 Public Review 以后的变更 ............................................................................................147 A.4 自 Servlet 3.0 EDR 以后的变更 ............................................................................................................148 A.5 自 Servlet 2.5 MR6 以后的变更 ............................................................................................................148 A.6 自 Servlet 2.5 MR 5 以后的变更 ...........................................................................................................148 A.6.1 明确 SRV 8.4“Forward 方法” ...................................................................................................148 A.6.2 更新部署描述符“http-method values allowed” ........................................................................148 A.6.3 明确 SRV 7.7.1 “多线程问题” ...................................................................................................149 12 A.7 自 Servlet 2.5 MR 2 以后的变更 ...........................................................................................................149 A.7.1 更新 JavaEE 容器注解的要求 ...................................................................................................149 A.7.2 更新 Java 企业版的要求 ............................................................................................................149 A.7.3 明确 HttpServletRequest.getRequestURL() ................................................................................149 A.7.4 从 HttpSession.getId()移除 IllegalStateException.......................................................................149 A.7.5 ServletContext.getContextPath()...................................................................................................150 A.7.6 web 应用中的 web.xml 的要求 ...................................................................................................150 A.8 自 Servlet 2.4 以后的变更 .....................................................................................................................150 A.8.1 Session 解释 .................................................................................................................................150 A.8.2 过滤所有分派 .............................................................................................................................151 A.8.3 多次出现的 Servlet 映射 ............................................................................................................151 A.8.4 多次出现 Filter 映射 ..................................................................................................................151 A.8.5 授权约束支持其他的 HTTP 方法 .............................................................................................152 A.8.6 最低 J2SE 要求 ...........................................................................................................................153 A.8.7 注解和资源注入 .........................................................................................................................153 A.8.8 移除了 SRV.9.9(“错误处理”)要求 .......................................................................................154 A.8.9 明确 HttpServletRequest.isRequestedSessionIdValid()...............................................................154 A.8.10 明确 SRV.5.5 (“结束响应对象”) ........................................................................................154 A.8.11 明确 ServletRequest.setCharacterEncoding()............................................................................154 A.8.12 Java 企业版要求 ........................................................................................................................154 A.8.13 新增了 Servlet 2.4 MR 更新的变更历史 ................................................................................154 A.8.14 明确同步访问 Session 对象 .....................................................................................................155 A.9 自 Servlet 2.3 以后的变更 .....................................................................................................................155

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值