以下博客来源我的有道云笔记,点击查看原文
请求会先找到分发器 servlet DispatchServlet 所以在导入相应jar包后 应当:
1.在项目的web.xml文件中配置分发器:
action
org.springframework.web.servlet.DispatcherServlet
action
*.action
2.分发器通过web.xml中指定的路径找到src目录下的spring的处理器,spring配置文档中会有一个默认的处理器(即可手动配置修改也可不配) (在以上代码3—4行间加入以下代码指定spring配置文档路径)
contextConfigLocation
classpath:applicationContext.xml
默认处理器:
以下配置可以通过多个路径访问同一个控制器:
3.把控制器,即控制层类交给spring容器管理,即在spring配置文档中:(处理器通过name属性的url地址找到控制器)
4.在控制器类中,可以通过ModelAndView来进行页面跳转等一系列动作。以下是跳转到指定页面:(默认是转发)
public class HomeController extends AbstractController {
protected ModelAndView handleRequestInternal(HttpServletRequest request,
HttpServletResponse response) throws Exception {
System.out.println("HomeController...");
return new ModelAndView("index");
}
}
重定向:
return "redirect:/jsp/index.jsp";//重定向
5.在web.xml配置逻辑试图( 如果Action中书写的是视图逻辑名称,那么视图解析器就必须配置
如果Action中书写的是视图真实名称,那么视图解析器就可选配置 )
6.显示到页面
1.依然在web.xml文件中配置好 分发器 并且通过分发器找到spring的配置文件
2.在spring配置文件中配好命名空间后让springioc容器去扫描带@Controller的类
3.在控制器类 标明注解 @Controller 表示把控制器交给容器管理
在方法上方 标明注解 @RequestMapping(value="/user_login.action",method=RequestMethod.POST)
value属性表示访问路径 method表示使用什么方法
控制器中的方法参数可以写多个 ,可以写一个实体类,直接点出里面从页面传过来的属性值
也可以写页面的一个字段名
@RequestMapping(value="/user_login.action",method=RequestMethod.POST)
public String login(Model mv,
User user,
String sex,
// HttpServletRequest request,
HttpServletResponse response){
System.out.println(user.getUsername()+user.getPassword()+sex+user.getBirthday());
System.out.println("SpringMVC 注解版本....");
//把数据存放在reqeust作用域
mv.addAttribute("request_username", "张三");
//把数据存放在session作用域中
// request.getSession().setAttribute("session_username", "李四");
return "/jsp/index.jsp";//默认转发
//return "redirect:/jsp/index.jsp";//重定向
}
1.得到页面传过来的日期处理
/**
* 自定义类型转换器
*/
@InitBinder
public void initBinder(HttpServletRequest request,ServletRequestDataBinder binder) throws Exception {
//注册一个客户编辑器
binder.registerCustomEditor(
Date.class,
new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true));
}
2.解决中文乱码问题(加入web.xml)
CharacterEncodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
CharacterEncodingFilter
/*