你的位置:首页 > Java教程

[Java教程]初始SpringMVC


1.在web.

<!-- 注册中央处理器 --> <servlet>    <servlet-name>springmvc</servlet-name>   <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>      <init-param>   <!-- 设定上下文的参数名称-->     <param-name>contextConfigLocation</param-name>      <param-value>classpath:applicationContext.do</url-pattern> </servlet-mapping>

 2.制定处理器

public class MyController implements Controller {  @Override  protected ModelAndView handleRequest(HttpServletRequest request,      HttpServletResponse response) throws Exception {    ModelAndView mv=new ModelAndView();    mv.addObject("学习", "学习啊!");      //逻辑视图名    mv.setViewName("/WEB-INF/jsp/index.jsp");    return mv;  }  }  

3.配置SpringMVC

<!-- 注册处理器 -->   <bean id="hello.do" class="cn.happy.action.MyConverter"></bean>

视图解析器

 <!--视图解析器 -->  <!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/WEB-INF/jsp/"></property>    <property name="suffix" value=".jsp"></property>  </bean> -->

 

4.jsp效果图

 

 

二:注解式开发

1.使用@Controller和@RequestMapping()实现欢迎程序

@Controllerpublic class MyController{@RequestMapping(value="/hello.do")public String doFirst(HttpServletRequest request,      HttpServletResponse response){    ModelAndView mv=new ModelAndView();    mv.addObject("你好", "SpringMVC!");    mv.setViewName("index");    return mv;  }

2.一个处理类定义多个处理器方法

public class MyMultiActionController{  @RequestMapping(value="/first.do")  public ModelAndView doFirst(HttpServletRequest request,      HttpServletResponse response) throws Exception {    ModelAndView mv=new ModelAndView();    mv.addObject("学习", "学习啊!");    mv.setViewName("WEB-INF/jsp/index.jsp");    return mv;  }  @RequestMapping(value="/Second.do")  public ModelAndView doSecond(HttpServletRequest request,      HttpServletResponse response) throws Exception {    ModelAndView mv=new ModelAndView();    mv.addObject("吃饭", "学习啊!");    mv.setViewName("WEB-INF/jsp/index.jsp");    return mv;  }}

注解式开发  命名空间

<!--视图解析器 -->  <!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="prefix" value="/WEB-INF/jsp/"></property>    <property name="suffix" value=".jsp"></property>  </bean> -->

 

效果图

3.注解式开发  请求中的通配符用法

  @RequestMapping(value="/second.do")    public String doSecond() {    System.out.println("second===============");      return "index";    }    @RequestMapping(value="/*third.do")// *代表0个或者多个字符,以third结尾就行    public String doThird() {      return "index";    }     @RequestMapping(value="/fourth*.do")// *代表0个或者多个字符,以fourth开始就行   public String doFourth() {    System.out.println("fourth===============");     return "index";   }   @RequestMapping(value="/**/fiveth.do")// **在hr和fiveth中间需要多级路径,或者没有路径均可访问   public String doFiveth() {     return "index";   }    @RequestMapping(value="/*/sixth*.do")// *在hr和sixth中间,必须书写一级路径,而且必须是一级   public String doSixth() {   System.out.println("sixth===============");     return "index";   }}

 

4.注解式开发 请求中方式的定义

@RequestMapping

RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

RequestMapping注解有六个属性,下面我们把她分成三类进行说明。

1、 value, method;

value:     指定请求的实际地址,指定的地址可以是URI Template 模式(后面将会说明);

method:  指定请求的method类型, GET、POST、PUT、DELETE等;

method属性的取值为RequestMethod,是一个枚举常量。常用值为RequestMethod.GET与RequestMethod.POST。

2、 consumes,produces;

consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

 

3、 params,headers;

params: 指定request中必须包含某些参数值是,才让该方法处理。

headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。 

  5.请求中所携带的请求参数

@Controller@RequestMapping("/hr")public class MyController {   @RequestMapping(value="/first.do",method=RequestMethod.POST)  public String doFirst(String s,Model model) {    model.addAttribute("uname", uname());    return "index";  }

jsp页面

 //参数自动装配问题<form action="${pageContext.request.contextPath }/first.do" method="post"><input name="username"/><br/><br/>    <input type="submit" value="提交"/>  </form>

 

校正请求参数名   这里的name和页面表单元素name属性值保持一致,就可实现自动装配

@Controllerpublic class MyController {  @RequestMapping(value="/first.do",method=RequestMethod.POST)  public String doFirst(@RequestParam("uanme")String s,Model model) {    System.out.println("uname", uname());    model.addAttribute("uname",uname());    return "index";  }

对象参数

@RequestMapping("/hr")public class MyController {  @RequestMapping(value="/first.do",method=RequestMethod.POST)  public String doFirst(UserInfo info,Model model) {    model.addAttribute("uname", info.getUname());    return "index";  }

 //参数自动装配问题<form action="${pageContext.request.contextPath }/first.do" method="post"><input name="username"/><br/><br/>    <input type="submit" value="提交"/>  </form>