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自动帮你做转换