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 }

 

posted @ 2018-04-16 18:54  小鹿笔记  阅读(140)  评论(0编辑  收藏  举报