JavaWeb完整案例详细步骤( 七 )

  1. Servlet的编写
如果为了实现不同的方法,我们需要不断地调用HttpServlet,因此通过编写一个BaseServlet来代替HttpServlet
package com.wfy.servlet;?import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;?//替换HttpServlet ,根据请求的最后一段路径来进行方法分发public class BaseServlet extends HttpServlet {    //根据请求的最后一段路径来进行方法的分发    @Override    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        //1.获取请求路径        String uri = req.getRequestURI();  //BrandTest/brand/SelectAllServlet       // System.out.println(uri);        //2.获取最后一段路径----方法名        int index=uri.lastIndexOf('/');        String methodName = uri.substring(index+1);        //System.out.println(methodName);        //3.执行方法        //3-1获取BrandServlet的字节码对象 class        // this:指代关系谁调用我(this 所在的方法),我(this)代表谁       // System.out.println(this);//com.wfy.servlet.BrandServlet@61f761f5        Class<? extends BaseServlet> cls = this.getClass();        //3-2.获取方法的Method对象        try {            Method method = cls.getMethod(methodName, HttpServletRequest.class, HttpServletResponse.class);            //3-3执行方法            method.invoke(this,req,resp);      } catch (NoSuchMethodException e) {            throw new RuntimeException(e);      } catch (InvocationTargetException e) {            throw new RuntimeException(e);      } catch (IllegalAccessException e) {            throw new RuntimeException(e);      }  }}package com.wfy.servlet;?import com.alibaba.fastjson.JSON;import com.wfy.pojo.Brand;import com.wfy.pojo.PageBean;import com.wfy.service.BrandService;import com.wfy.service.impl.BrandServiceImpl;?import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.BufferedReader;import java.io.IOException;import java.util.List;?@WebServlet("/brand/*")public class BrandServlet extends BaseServlet{    private BrandService service = new BrandServiceImpl();?    //获取全部信息    public void selectAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //1.调用service查询        List<Brand> brands = service.SelectAll();        //2.将数据转换为JSON        String toJSONString = JSON.toJSONString(brands);        //3.写数据        response.setContentType("text/json;charset=utf-8");        response.getWriter().write(toJSONString);  }    //新增信息    public void add(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{        //1.接收品牌的数据        BufferedReader reader = request.getReader();        String params = reader.readLine();//json字符串        Brand brand = JSON.parseObject(params, Brand.class);        //2.调用service        service.AddBrand(brand);        //3.响应成功标识        response.getWriter().write("success");  }    //更改指定数据信息    //1-根据id查找指定数据,进行数据的回显操作    public void selectById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //1.接收从web层传输过来的id        BufferedReader reader = request.getReader();        String params = reader.readLine();        Integer id = JSON.parseObject(params, int.class);        Brand brand = service.SelectById(new Integer(id).intValue());        //2.将数据转化为JSON        String toJSONString = JSON.toJSONString(brand);        //3.写入数据        response.setContentType("text/json;charset=utf-8");        response.getWriter().write(toJSONString);??  }?    //2-更改品牌的信息    public void updateBrand(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {         //1.接收web层传输过来的数据        BufferedReader reader = request.getReader();        String params = reader.readLine();        Brand brand = JSON.parseObject(params, Brand.class);        //将数据进行回显操作       // System.out.println(brand);       service.UpdateBrand(brand);       //3.响应成功标识        response.getWriter().write("success");  }    //删除指定数据    public void deleteById(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{        //1.接收用户传递的id        BufferedReader reader = request.getReader();        String params = reader.readLine();        //将JSON数据转换为java数据        Integer id = JSON.parseObject(params, int.class);        service.DeleteById(new Integer(id).intValue());        //响应成功标识        response.getWriter().write("success");  }    //删除多条数据    public void deleteByIds(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{        //1.接收需要删除品牌数据的ids        BufferedReader reader = request.getReader();        String params = reader.readLine();      //System.out.println(params);        //1-2将接收到的信息转换为int[]        int[] ids = JSON.parseObject(params, int[].class);//             for(int id:ids){//                 System.out.println(id);//             }        //2.调用service         service.DeleteByIds(ids);?        //3.响应成功标识        response.getWriter().write("success");  }?    //分页查询    public void selectByPage(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //1.接收参数   当前页码 和 每页展示的条数在url后进行拼接   url?currentPage=1&pageSize=5        String _currentPage = request.getParameter("currentPage");        String _pageSize = request.getParameter("pageSize");        int currentPage = Integer.parseInt(_currentPage);        int pageSize = Integer.parseInt(_pageSize);?        //2.调用service进行查询        PageBean<Brand> pageBean = service.SelectByPage(currentPage, pageSize);        //3.转换成JSON对象        String jsonString = JSON.toJSONString(pageBean);        //4.将数据写入        response.setContentType("text/json;charset=utf-8");        response.getWriter().write(jsonString);  }    //分页条件查询    public void selectByPageAndCondition(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {        //1.接收参数   当前页码 和 每页展示的条数在url后进行拼接   url?currentPage=1&pageSize=5        String _currentPage = request.getParameter("currentPage");        String _pageSize = request.getParameter("pageSize");        int currentPage = Integer.parseInt(_currentPage);        int pageSize = Integer.parseInt(_pageSize);?        //获取条件查询的对象        BufferedReader reader = request.getReader();        String params = reader.readLine();        Brand brand = JSON.parseObject(params, Brand.class);?        //2.调用service进行查询        PageBean<Brand> pageBean = service.SelectByPageAndCondition(currentPage,pageSize,brand);        //3.转换成JSON对象        String jsonString = JSON.toJSONString(pageBean);        //4.将数据写入        response.setContentType("text/json;charset=utf-8");        response.getWriter().write(jsonString);  }}

经验总结扩展阅读