从ssm框架 到 spring框架 再到 springmvc框架 设计思想

        一、在使用ssm框架的时候,从前端发送get请求到后端处理数据的完整流程是:

@WebServlet(name = "getAll", value = "/getAll")
public class AddServelet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
 //设置请求编码格式
       req.setCharacterEncoding("utf-8");
//设置相应编码格式
       resp.setCharacterEncoding("utf-8");
       resp.setContentType("text/html;charset=utf-8");
 //创建业务层对象
        StudentService studentService =  new StudentServiceImpl()();
 //获取请求数据: 请求数据需要自己单独编写代码获取,并且编写相关类型转换的代码!
        Integer pageIndex = 1;
        Integer pageNum = 3 ;
        String page = request.getParameter("pageIndex");
        if (page!=null){
            pageIndex = Integer.valueOf(page);
        }
        String stuName = request.getParameter("stuName");

 //处理请求
        PageInfo all = studentService .getAll(pageIndex, pageNum, stuName);
      
        
 //响应结果
     //直接响应
     //请求转发
     //重定向
        request.setAttribute("info",all);
        request.getRequestDispatcher("/index.jsp").forward(request,response);
       
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }
}

    1)自己创建一个自定义的getAllServelet  去继承原有的HttpServlet.

               getAllServelet接收到get请求首先调用service方法,根据请求的方法参数,具体是调用doGet()或者是doPost()方法或者是其他对应的方法。

                所以首先需要重写service方法或者是doGet()方法。 

      ②)重写doGet()方法5步实现业务逻辑。

        1)

             设置请求编码格式
             设置相应编码格式
        2)创建业务层对象
        3)获取请求数据: 请求数据需要自己单独编写代码获取,并且编写相关类型转换的代码!
        4)处理请求
        5)响应结果:
                    直接响应
                     请求转发
                     重定向

 

 

 

二、只使用spring框架

        跟ssm框架步骤一样,只不过这个时候不在通过new关键字来创建对象

        而是使用spring框架的容器获取bean对象

        这时需要手动获取spring容器对象。

这里重写service方法,和重写doGet()方法其实一样

public class BookServlet extends HttpServlet {
    //声明业务层属性
    private BookService bookService;
    //重写init方法:init,完成Spring容器中相关资源和Servlet的初始化!!
    @Override
    public void init() throws ServletException {
        //创建Spring容器对象
        ApplicationContext ac= WebApplicationContextUtils.getWebApplicationContext(this.getServletContext());
        //获取业务层bean
        bookService= (BookService) ac.getBean("bookServiceImpl");
    }
    //重写service方法
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置请求编码格式
            req.setCharacterEncoding("utf-8");
        //设置相应编码格式
            resp.setCharacterEncoding("utf-8");
            resp.setContentType("text/html;charset=utf-8");
         //创建业务层对象
       BookService  bookService = new BookServiceImpl();
        //       获取请求数据: 请求数据需要自己单独编写代码获取,并且编写相关类型转换的代码!
            String aa = req.getParameter("aa");
        //处理请求
        List<Book> books = bookService.selectAllBookService();
        System.out.println("今天天气不错,适合学习!!");
        //响应结果
            //直接响应
            resp.getWriter().write(books.toString());
            //请求转发
            //重定向
    }
}

三、使用spring框架和springmvc框架

        还是ssm框架的两大步5小步。不过这时候只需要转心处理5小步中的业务处理和响应结果。其他的事情统统由spring框架和springmvc框架搞定了。

       1)所有对象都不需要手动创建了

        spring.xml和springmvc.xml实际上在运行时被解析成了两个对象,把它们叫做spring容器和springmvc容器。

              实质上这两个对象就是两个map键值对集合。

              并且通过扫描包路径将所有对象全部放在集合中。

 

       2)servelet也不需要手动创建

                spring相关包提供了一个DispatcherServlet类,在web.xml中配置该类对象,并且设置servelet拦截的话,所有请求就都有该类来处理。

        这里面的<init-param>标签实质上是将springmvc容器注入给dispatcherServlet对象.

        并且请求参数的获取也由该对象实现了.

        3)doGet()跑去哪了?

        这个时候引入了Controller类,也就是路由和调用对应方法.实质上代替了ssm框架的

doGet()方法.最后由dispatcherServlet对象拦截url和调用Controller中对应url的方法.

        

四 、图解:

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值