后台对表单的参数限定
/*
* params表示对表单参数的一个限定。
* 这里的username表示表单参数里面必须有username这个参数。否则无法通过url访问该方法。
* 例如:"http://localhost:8080/SpringMVC/showLang01.action?username=FireLang"
* - 当然也可以这么写"http://localhost:8080/SpringMVC/showLang01.action?username="表示后台获取到的数据为空字符串。
*/
@RequestMapping(value="/showLang01.action",params={"username"})
public String showLang01() throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
return "/showItemsListByAnnotation.action";
}
另外还可以这么写:
/*
* params表示对表单参数的一个限定。
* 如果在参数名前面加上一个"!",这样就表示如果表单传递过来有这个参数,那么无法通过url访问到该方法。
*/
@RequestMapping(value="/showLang01.action",params={"!username"})
public String showLang01() throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
return "/showItemsListByAnnotation.action";
}
/*
* params表示对表单参数的一个限定。
* 这样就表示传递过来的username参数值必须为FireLang,否则无法通过url访问到该方法。
*/
@RequestMapping(value="/showLang01.action",params={"username=FireLang"})
public String showLang01() throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
return "/showItemsListByAnnotation.action";
}
/*
* params表示对表单参数的一个限定。
* 这样就表示传递过来的username参数值不能为FireLang,否则无法通过url访问到该方法。
*/
@RequestMapping(value="/showLang01.action",params={"username!=FireLang"})
public String showLang01() throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
return "/showItemsListByAnnotation.action";
}
获取表单参数
- 获取表单数据通过变量名封装!!!
/*
* 获取表单数据!!
*/
@RequestMapping(value="/showLang04.action",params={"username!=FireLang"})
public String showLang04(String userLevel) throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
System.out.println(userLevel);
return "/showItemsListByAnnotation.action";
}
通过链接:http://localhost:8080/SpringMVC/showLang04.action?userLevel=vip
/*
* 如果方法参数名称和表单数据名称不匹配时,可以通过
* 其中:如果只有一个参数,value可以省略。
* 规定:在写了注解调整参数名的情况下,必须要传入该参数,否则会报错!!!
*/
@RequestMapping(value="/showLang05.action",params={"username!=FireLang"})
public String showLang05(@RequestParam(value="level")String userLevel) throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
System.out.println(userLevel);
return "/showItemsListByAnnotation.action";
}
访问链接:http://localhost:8080/SpringMVC/showLang05.action?level=vip
如果两个参数都写了,以注解参数为准:http://localhost:8080/SpringMVC/showLang05.action?level=vip&userLevel=lang
/*
* 如果我们封装的数据太多,我们需要把需要的数据封装到实体对象当中。
*
* 注意:
* 我们的实体类必须写set方法!!!否则不能够把数据封装进去!!!
*/
@RequestMapping(value="/showLang06.action",params={"username!=FireLang"})
public String showLang06(User user) throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
System.out.println(user);
return "/showItemsListByAnnotation.action";
}
访问链接:http://localhost:8080/SpringMVC/showLang06.action?name=FireLang&password=123
/*
* 如果我们封装的数据太多,我们需要把需要的数据封装到实体对象当中。
*
* 注意:
* 我们的实体类必须写set方法!!!否则不能够把数据封装进去!!!
*
* 当把数据封装到user后,我们依然可以单独获取某个数据!!
*/
@RequestMapping(value="/showLang07.action",params={"username!=FireLang"})
public String showLang07(User user,String name) throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
System.out.println(user);
System.out.println("["+name+"]"); //获取name
return "/showItemsListByAnnotation.action";
}
访问链接:http://localhost:8080/SpringMVC/showLang07.action?name=FireLang&password=123
/*
* 我们也可以获取Model对象
*/
@RequestMapping(value="/showLang10.action",params={"username!=FireLang"})
public void showLang10(Model model) throws Exception{
/*
* 当然可以向model中添加数据!!!来让页面显示,model数据最终会放进request中!!!
*/
model.addAttribute("lang", "哈哈哈");
System.out.println(model);
}
获取HttpServletRequest,HttpServletResponse,HttpServletSession:
- 通过类型获取!!!
- 注意和上面获取表单数据区分开!!!
获取HttpServletRequest,HttpServletResponse
/*
* 获取request和response
*
* 结论:从代码中可以看出,我们获取HttpServletRequest和HttpServletResponse时是按照类型获取的。因为在当前请求中,可以肯定,HttpServletRequest只能有一个,由服务器产生。
*/
@RequestMapping(value="/showLang01.action",params={"username!=FireLang"})
public String showLang01(HttpServletRequest xxx,HttpServletResponse yyy,HttpServletRequest request,HttpServletResponse response) throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
System.out.println(xxx);
System.out.println(yyy);
System.out.println(request);
System.out.println(response);
return "/showItemsListByAnnotation.action";
}
获取HttpServletSession
/*
* 获取request和response
* 同样,获取HttpSession的时候也和获取HttpServletRequest,HttpServletResponse是一样的。
*/
@RequestMapping(value="/showLang02.action",params={"username!=FireLang"})
public String showLang02(HttpSession session,HttpSession xxxx) throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
System.out.println(session);
System.out.println(xxxx);
return "/showItemsListByAnnotation.action";
}
但是有个特例:我们不能够获取ServletContext(application)
原因是:ServletContext在Tomcat中对象只有一个,不能够实例化多个!!
反而request,response,session等都可以实例化多个!!!
/*
* 这会报错!!!
* 所以我们只能够通过request获取ServletContext。
*/
@RequestMapping(value="/showLang03.action",params={"username!=FireLang"})
public String showLang03(ServletContext application) throws Exception{
/*
* 返回一个视图的路径或者另外一个url路径,通过视图解析器解析该字符串成一个视图对象。也就是说该路径就是ModelAndView中的View。
*/
System.out.println(application);
return "/showItemsListByAnnotation.action";
}
方法返回值
/*
* 如果我们已经在代码中把页面输出处理好了,我们可以把返回值设置为null
*/
@RequestMapping(value="/showLang08.action",params={"username!=FireLang"})
public void showLang08(HttpServletResponse response) throws Exception{
response.getWriter().print("这是一个页面!!!");
}
/*
* 我们也可以只返回一个View(视图,由视图解析器可以解析创建一个视图)而不返回 ModelAndView
*
* 其中可以是JstlView也可以是RedirectView等等。
*/
@RequestMapping(value="/showLang09.action",params={"username!=FireLang"})
public View showLang09() throws Exception{
JstlView view=new JstlView();
view.setUrl("/WEB-INF/content/langx.jsp");
return view;
}
/*
* 我们也可以只返回一个View(视图,由视图解析器可以解析创建一个视图)而不返回 ModelAndView
*
* 其中可以是JstlView也可以是RedirectView等等。
*/
@RequestMapping(value="/showLang09.action",params={"username!=FireLang"})
public View showLang09() throws Exception{
RedirectView view=new RedirectView();
view.setUrl("http://www.baidu.com");
return view;
}
}
/*
* 但是最终返回的对象不能够是自定义类型!!!比如User否则会报错。
*/
@RequestMapping(value="/showLang11.action",params={"username!=FireLang"})
public Object showLang11(Model model) throws Exception{
RedirectView view=new RedirectView();
view.setUrl("http://www.baidu.com");
return view;
}