zoukankan      html  css  js  c++  java
  • Servlet组件合并

    一、开发web项目的步骤:
      1:创建web project
      2:导入第三方jar包,和数据库相应的脚本文件等
      3:添加配置文件,db.properties
      4:编写工具类,DBUtil等
      5:根据Dao思想编写相应代码
        包含:
          实体类,接口,实现类
      6:编写业务层的代码----(M层:model,包含持久层和业务层)
      7:编写Servlet组件。(C层:controller,控制层) 
      8:配置web.xml文件

      测试部分:
        第一步:启动服务器tomcat
        第二步: 将项目部署到服务器上(代码更新,需要重新部署)
        第三步: 在浏览器上输入请求路径。

    二、容器处理请求资源路径的问题:
        1:什么是请求资源路径??
          http://localhost:8088/appName/xx.html;
        /appName/xx.html是请求资源路径。
        2:容器如何处理请求资源路径
          (1)浏览器通过IP,Port向容器发送请求,建立连接。
          (2)根据appName找到服务器内对应的应用程序,再根据
            xx.html(里面action=“url")去匹配web.xml中的<url-pattern>的值。
            匹配成功后,去执行对应的web组件。
        3:精确匹配。
            容器在处理请求资源路径时,先会严格精确
          的找<url-pattern>的值,如 请求资源
          路径为:appName/addEmp.html,会先
          查找<url-pattern>的值有没有一个是addEmp.html;
          如果有,就会执行相应的web组件
          (即使此时有addEmp.html页面,也不会显示页面)
         4:通配符匹配。
          *:可以匹配n个任何字符, 
          如果<url-pattern>的值为 /*,表示任何请求资源路径
          都会执行此web组件。
            reg:
              http://ip:port/appName/abc
              http://ip:port/appName/abc.html
              http://ip:port/appName/abc/abc.html
        5:后缀匹配.
            如果<url-pattern>的值为
          *.后缀,此时一定不能在*前添加"/"。
          当请求资源路径为此后缀的格式时,就会执行对
          应的web组件
            reg:
              <url-pattern>*.do<url-pattern>
              请求资源路径:
              http://ip:port/appName/abc.do
              http://ip:port/appName/abc/abc.do
         6:无匹配的servlet处理
              如果请求资源路径在web.xml中无任何匹配,那么就会查找
             是否有此文件。如果有,将文件响应给浏览器,如果没有,
            报404错误。

      总结:三种匹配的优先级:
        精确匹配>通配符匹配>后缀匹配


    一、
      Servlet组件的合并问题
        1:为什么要合并?
            因为Servlet组件充当的是控制器的角色,通过分析资源路径,
          用来分发不同的资源。所以,一个Servlet组件
          就可以做到分发不同的资源。 
        2:如何合并?
            request.getRequestURI():此方法返回的
          是请求资源路径,我们可以使用分支结构来进行控制
          资源的分发。
          reg:
            String path =request.getRequestURI(); 
            if(path.equals("/appName/listEmp.do")){
              //组件的内容
            }else if(path.equals("/appName/deleteEmp.do")){
                   //组件内容
            }

      二、采用后缀匹配--------------  .emp

      1 public class EmpServlet extends HttpServlet {
      2     public void service(HttpServletRequest request, HttpServletResponse response)
      3             throws ServletException, IOException {
      4         //获取请求资源路径
      5         request.setCharacterEncoding("utf-8");
      6         response.setContentType("text/html;charset=utf-8");
      7         PrintWriter pw = response.getWriter();
      8         EmployeeDao dao = DaoFactory1.getInstance();
      9  
     10         String path = request.getRequestURI();
     11         if("/ServletDay05/listEmp.emp".equals(path)){
     12             List<Employee> emps = dao.findAll();
     13             pw.println("<table border='1px'>");
     14             pw.println("<tr><td>编号</td><td>姓名</td><td>操作</td></tr>");
     15             for(Employee e:emps){
     16                 pw.println("<tr><td>"+e.getId()+"</td><td>"+e.getName()+"</td><td><a href='toUpdate.emp?id="+e.getId() +"'>修改</a><a href='delete.emp?id="+e.getId()+"'>删除</a></td></tr>");
     17             }
     18             pw.println("</table>");
     19             pw.println("<a href='addEmp.html'>添加员工</a>");
     20             pw.close();
     21         }else if("/ServletDay05/addEmp.emp".equals(path)){
     22             String name = request.getParameter("name");
     23             int age = Integer.parseInt(request.getParameter("age"));
     24             double salary = Double.parseDouble(request.getParameter("salary"));
     25             char gender = request.getParameter("gender").charAt(0);
     26             String[] h1 = request.getParameterValues("hobby");
     27             String hobby = "";
     28             for(int i=0;i<h1.length;i++){
     29                 if(i<h1.length-1){
     30                     hobby+=h1[i]+",";
     31                 }else{
     32                     hobby+=h1[i];
     33                 }
     34             }
     35             String loc = request.getParameter("loc");
     36             Employee e = new Employee(name, age, salary, gender, hobby, loc);
     37             dao.addEmployee(e);
     38             response.sendRedirect("listEmp.emp");    
     39         }else if("/ServletDay05/delete.emp".equals(path)){
     40             int id = Integer.parseInt(request.getParameter("id"));
     41             dao.deleteById(id);
     42             response.sendRedirect("listEmp.emp");
     43         }else if("/ServletDay05/toUpdate.emp".equals(path)){
     44             int id = Integer.parseInt(request.getParameter("id"));
     45             //通过ID查询此员工的所有信息
     46             Employee e = dao.findById(id);
     47             pw.println("<form action='save.emp?id="+e.getId()+"' method='post'>");
     48             pw.println("id:"+e.getId());
     49             pw.println("name:<input name='name' value='"+e.getName()+"'><br>");
     50             pw.println("age:<input name='age' value='"+e.getAge()+"'><br>");
     51             pw.println("salary:<input name='salary' value='"+e.getSalary()+"'><br>");
     52             if(e.getGender()=='f'){
     53                 pw.println("gender:<input type='radio' checked  name='gender' value='f'>女<br>");
     54                 pw.println("gender:<input type='radio' name='gender' value='m'>男<br>");
     55             }else{
     56                 pw.println("gender:<input type='radio'  name='gender' value='f'>女<br>");
     57                 pw.println("gender:<input type='radio' checked name='gender' value='m'>男<br>");
     58             }
     59             pw.println("hobby:");
     60             if(e.getHobby().contains("1")){
     61                 pw.println("<input type='checkbox' checked name='hobby' value='1'/>读书 ");
     62             }else{
     63                 pw.println("<input type='checkbox' name='hobby' value='1'/>读书 ");
     64             }
     65             if(e.getHobby().contains("2")){
     66                 pw.println("<input type='checkbox' checked name='hobby' value='2'/>音乐");
     67             }else{
     68                 pw.println("<input type='checkbox' name='hobby' value='2'/>音乐 ");
     69             }
     70             if(e.getHobby().contains("3")){
     71                 pw.println("<input type='checkbox' checked name='hobby' value='3'/>电影 ");
     72             }else{
     73                 pw.println("<input type='checkbox' name='hobby' value='3'/>电影");
     74             }
     75             pw.println("<br>");
     76             pw.println("loc:<select name='loc'>");
     77             if(e.getLoc().equals("cc")){
     78                 pw.println("<option selected value='cc'>长春</option>");
     79                 pw.println("<option value='wh'>武汉</option>");
     80                 pw.println("<option value='gx'>广西</option>");
     81             }else if(e.getLoc().equals("wh")){
     82                 pw.println("<option value='cc'>长春</option>");
     83                 pw.println("<option selected value='wh'>武汉</option>");
     84                 pw.println("<option value='gx'>广西</option>");
     85             }else{
     86                 pw.println("<option value='cc'>长春</option>");
     87                 pw.println("<option value='wh'>武汉</option>");
     88                 pw.println("<option selected value='gx'>广西</option>");
     89             }
     90             pw.println("</select>");
     91             pw.println("<input type='submit' value='保存'>");
     92             pw.println("</form>");
     93         }else if("/ServletDay05/save.emp".equals(path)){
     94             int id = Integer.parseInt(request.getParameter("id"));    
     95             String name = request.getParameter("name");
     96             int age = Integer.parseInt(request.getParameter("age"));
     97             double salary = Double.parseDouble(request.getParameter("salary"));
     98             char gender = request.getParameter("gender").charAt(0);
     99             String[] h1 = request.getParameterValues("hobby");
    100             String hobby = "";
    101             for(int i=0;i<h1.length;i++){
    102                 if(i<h1.length-1){
    103                     hobby+=h1[i]+",";
    104                 }else{
    105                     hobby+=h1[i];
    106                 }
    107             }
    108             String loc = request.getParameter("loc");
    109             Employee e1 = new Employee(id, name, age, salary, gender, hobby, loc);
    110             
    111             dao.modify(e1);
    112             //重定向
    113             response.sendRedirect("listEmp.emp");
    114         }
    115     }
    116 }

     

  • 相关阅读:
    JZ2440开发板开发环境搭建
    20180730-宿主机开发环境搭建
    20180319-双网卡电脑同时上内外网
    嵌入式ARM板子起步
    20180127-服务器开发环境搭建
    Pool多进程示例
    Python基础-day01
    解释型语言与编译型语言
    C 编译过程浅析
    博客奇谭
  • 原文地址:https://www.cnblogs.com/xiaozelulu/p/8888101.html
Copyright © 2011-2022 走看看