JavaEE 之 Spring(三)

1.Spring Web MVC

  a.定义:是一种基于Java的实现了Web MVC设计模式的请求驱动类型的轻量级Web框架,即使用了MVC架构模式的思想,将web层进行职责解耦,基于请求驱动指的就是使用请求-响应模型,框架的目的就是帮助我们简化开发,Spring Web MVC也是要简化我们日常Web开发的。

  b.配置web.xml:

    <servlet>
        <servlet-name>spring</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>
                /WEB-INF/springmvc-servlet.xml
            </param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>spring</servlet-name>
        <url-pattern>*.spring</url-pattern>
    </servlet-mapping>

 

  c.配置springmvc-servlet.xml

    <!-- 启动注解驱动 -->
    <mvc:annotation-driven/>
    <!--启用自动扫描  -->
    <context:component-scan 
        base-package="com.wode.controller" />
    
    <!-- ViewResolver视图解析器 用于将返回的ModelAndView对象进行分离 -->
    <bean class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass"
            value="org.springframework.web.servlet.view.JstlView"></property>
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!-- jackson -->
    <bean
        class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
        <property name="messageConverters">
            <list>
                <ref bean="mappingJacksonHttpMessageConverter" />
            </list>
        </property>
    </bean>
    <bean id="mappingJacksonHttpMessageConverter"
        class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
        <property name="supportedMediaTypes">
            <list>
                <value>text/html;charset=UTF-8</value>
            </list>
        </property>
    </bean>

 

  d.使用:

    ①方法一

@RequestMapping(path="login")
//login 与 页面跳转页面 login.spring相对应
public String regist(@Request(value="name") String name,String pwd){      //这里,我们的参数和表单提交保持一致
    System.out.println(name+" "+pwd);
    return "main";
}   

    注:参数列表还能传 HttpServletRequest、HttpServletResponse、UserBean、Map<String,Object>(请求转发传参)、PrintWriter

 

    ②方法二

@Controller
@RequestMapping("user.do") //我们在最前边写上了user.do用户的所有要使用的方法都在这个位置
public class UserController {
    @RequestMapping(params="method=login")//通过参数确定我们到底使用的这个类中的哪一个方法
    public String login(){
        System.out.println("用户的登录了");
        return null;
    }
    @RequestMapping(params="method=regist")
    public String regist(){
        System.out.println("用户注册了");
        return null;
    }
}

      表单中:

<form action="user.do" method="get" >
  <input type="hidden" name="method" value="regist"><!--这里通过一个隐藏表单域来控制我们到底提交了哪个方法-->
  name:<input type="text" name="username"><br />
  pwd:<input type="password" name="password"><br /> 
  <input type="submit">
</form>

 

  e.请求转发 与 重定向

  @RequestMapping("regist.do")
    public String regist(UserBean bean,Map<String,Object> map){
        System.out.println(bean.getUsername()+" "+bean.getPassword());
        if(bean.getUsername().equals("zhangsan")){
            //请求转发
            map.put("userName",bean.getUserName);
            return "forward:main.jsp";
        }else{
            //重定向
            return "redirect:main.jsp";
        }
    }

 

  f.json的使用

@Controller
public class TestAction {
    @RequestMapping("test.do")
    public @ResponseBody List<UserBean> test1(String uname) throws Exception{  //这个东西是核心
        List<UserBean> list = new ArrayList<UserBean>();
        UserBean user=new UserBean();
        user.setUsername("张三");
        user.setPassword("admin");
        UserBean user2=new UserBean();
        user2.setUsername("lisi");
        user2.setPassword("admin");
        list.add(user);
        list.add(user2);
        return list;
    }
}

    @ResponseBody自动帮你做转换

 

posted @ 2017-03-21 19:38  晨M风  阅读(181)  评论(0编辑  收藏  举报