标签:forward 页面 前端 app 注意 not get 笔记 电脑
----------------------------------------------------
在web.xml中配置前端控制器(系统提供的一个servlet类 只需配置即可 无需程序员开发 )
--------------------------------------------------------------
------------------------
非注解适配器
使用A适配器能够执行实现Controller接口的handler
package org.ssm.controller; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import org.ssm.po.Items; //实现controller接口的处理器 public class ItemsController1 implements Controller{ public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { // TODO Auto-generated method stub //调用service查找 数据库,查询商品列表,这里使用静态数据模拟 List<Items> itemsList = new ArrayList<Items>(); //向list中填充静态数据 Items items_1 = new Items(); items_1.setName("联想笔记本"); items_1.setPrice(6000f); items_1.setDetail("ThinkPad T430 联想笔记本电脑!"); Items items_2 = new Items(); items_2.setName("苹果手机"); items_2.setPrice(5000f); items_2.setDetail("iphone6苹果手机!"); itemsList.add(items_1); itemsList.add(items_2); //这个方法需要返回modelAndView 所以创建 ModelAndView modelAndView=new ModelAndView(); //这个方法九相当于request.setAttribute modelAndView.addObject("itemsList", itemsList); //指定视图 modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); return modelAndView; } }
使用B适配器能够执行 实现HttpRequestHandler接口的handler
package org.ssm.controller; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.HttpRequestHandler; import org.ssm.po.Items; public class ItemsController2 implements HttpRequestHandler{ //这个handler对应的适配器类是 org.springframework.web.servlet.mvc.HttpRequestHandlerAdapter public void handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws ServletException, IOException { // TODO Auto-generated method stub //调用service查找 数据库,查询商品列表,这里使用静态数据模拟 List<Items> itemsList = new ArrayList<Items>(); //向list中填充静态数据 Items items_1 = new Items(); items_1.setName("联想笔记本"); items_1.setPrice(6000f); items_1.setDetail("ThinkPad T430 联想笔记本电脑!"); Items items_2 = new Items(); items_2.setName("苹果手机"); items_2.setPrice(5000f); items_2.setDetail("iphone6苹果手机!"); itemsList.add(items_1); itemsList.add(items_2); arg0.setAttribute("itemsList", itemsList); //早期servlet程序转发操作 arg0.getRequestDispatcher("/WEB-INF/jsp/items/itemsList.jsp").forward(arg0, arg1); //使用哪个适配器都可以 但是这个适配器 可以通过response对象 来设置响应数据的格式 } }
----------
jsp页面
--------------------
非注解映射器
-----------------------------
视图解析器
-f---------------------
注解映射器、适配器
------------------------------------
使用注解方式开发的handler
package org.ssm.controller; import java.util.ArrayList; import java.util.List; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import org.ssm.po.Items; //使用注解开发的handler 不需要实现接口 这个注解和spring阶段 把action对象注入bean容器时使用的注解一样 导入的包也一样 //要明白 这里就是把该headler注入进spring容器中 @Controller //使用注解标识这是一个handler public class ItemsController3 { //这里边可以编写任意多个方法 没有之前实现指定的接口时 只能覆写指定接口的局限性 //使用注解标识映射路径 即将来访问的路径 建议映射路径和类名一样 action写不写都行 //@RequestMapping实现对query1方法的一个映射 一个方法对应一个url @RequestMapping("/query1.action") public ModelAndView query1()throws Exception{ //调用service查找 数据库,查询商品列表,这里使用静态数据模拟 List<Items> itemsList = new ArrayList<Items>(); //向list中填充静态数据 Items items_1 = new Items(); items_1.setName("联想笔记本"); items_1.setPrice(6000f); items_1.setDetail("ThinkPad T430 联想笔记本电脑!"); Items items_2 = new Items(); items_2.setName("苹果手机"); items_2.setPrice(5000f); items_2.setDetail("iphone6苹果手机!"); itemsList.add(items_1); itemsList.add(items_2); //创建modelAndView ModelAndView modelAndView=new ModelAndView(); modelAndView.addObject(itemsList); //指定视图 modelAndView.setViewName("/WEB-INF/jsp/items/itemsList.jsp"); return modelAndView; } }
然后再配置文件中配置该handler 推荐使用注解扫描方式(对标记@Controller类中标识有@RequestMapping的方法进行映射 在@RequestMapping里边定义映射的url)
否则 一个handler类就需要配置一个bean
--------------------------------
视图解析器的前缀和后缀配置
注意:如果配置了前缀和后缀 那么 在handler设置视图路径的时候 就不能在指定完整的路径了 但是有一个handler除外
不能指定完整路径的handler:1.实现Controller接口 以及2.注解方式实现的handler
1.
2.
路径为:
在配置了前缀和后缀之后 仍然需要指定完整路径的handler:实现了HttpRequesstHandler接口的handler
路径仍然为:
----------------------------
标签:forward 页面 前端 app 注意 not get 笔记 电脑
原文地址:http://www.cnblogs.com/Joke-Jay/p/7436562.html