SpringMVC是一个十分好用的mvc框架,多余的介绍在此不表。下面来看一个快速上手的案例。通过这个简单的案例你可以快速了解SpringMVC的使用。
这个案例是模拟简单的登录过程。分为以下几个步骤:
1、首先建立一个web项目并引入SpringMVC的相应jar包。
2、在web.xml中设置DispatcherServlet,如下:
<servlet> <span style="white-space:pre"> </span><servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <span style="white-space:pre"> </span><param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/http.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>说明:DispatcherServlet是SpringMVC的请求分发控制器。这里我们将以.do结尾的请求交给spring容器来分发给对应的逻辑处理。这里我们为其设置了初始化参数。http.xml是SpringMVC的配置文件,我们需要将相应的处理的bean配置在这个文件中,后面将详解。配置文件的名称可以是任意的合法的命名。
3、建立一个jsp页面,包含最简单的登录功能。
<form action="login.do" method="post"> <span style="white-space:pre"> </span><input type="text" name="username"/><br> <input type="password" name="password"><br> <input type="submit" value="login"> </form>说明:这里我们将用户名和密码这两个字段以post方式发送给后台,在后台接收以login.do发来的这个请求。
4、在http.xml中开始配置各个bean对象。如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 这里配置的是视图的解析。当前采用的是jsp视图,所以viewClass是JstlView。还有其他的视图模式,例如PDF,xml等 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass"> <value>org.springframework.web.servlet.view.JstlView</value> </property> <!-- 这里的prefix和suffix是用来和返回的视图名进行拼接得到完整的视图的路径 --> <property name="prefix"> <value>/WEB-INF/jsp/</value> </property> <property name="suffix"> <value>.jsp</value> </property> </bean> <!-- 这里配置的是当请求发来时如何将其转发到相应的处理上 --> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/toLogin.do">toLoginAction</prop> <prop key="/login.do">loginAction</prop> </props> </property> </bean> <bean id="loginAction" class="com.earl.spring.day02.practice.LoginAction" /> <bean id="toLoginAction" class="com.earl.spring.day02.practice.ToLoginAction" /> </beans>说明:抛开根标签先不看,固定格式必须那样写。我们看配置文件有3大部分:
第一部分是一个id为viewResolver的bean,它是视图的解析。也就是当逻辑处理完成后以什么样的形式展现。当前我们使用的是jsp显示,也就是返回一个jsp页面。我们如何得到这个jsp页面呢?我们在逻辑处理完成后会返回一个视图名,spring容器会根据这个视图名和上面配置文件中prefix和suffix来拼接出一个jsp文件的路径,之后就可以根据这个路径找到对应的页面并加以展示。
第二部分是一个id为urlMapping的bean,这个bean的作用是根据发来的请求将请求转发到相应的逻辑处理类。这里我们可以看到login.do的请求可以被转发到loginAction。
第三部分就是配置的各个逻辑处理的具体的类。
5、实现登录功能的逻辑。这里是简单的实现。如下:
public class LoginAction implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { String username=request.getParameter("username"); String password=request.getParameter("password"); if("zhangsan".equalsIgnoreCase(username)&&"123".equalsIgnoreCase(password)){ return new ModelAndView("loginSuccess"); } return new ModelAndView("loginFail"); } }说明:逻辑处理的类需要实现Controller接口,并实现其handleRequest方法。通过方法的参数我们可以获取到请求中的参数。这里简单实现一下登录的验证。验证成功后我们返回了一个ModelAndView对象,它携带一个参数,这个参数就是用来与http.xml中的prefix和suffix拼接的jsp文件的文件名。验证成功我们返回loginSuccess,验证失败返回loginFail,那么当逻辑处理完成,就会返回相应的jsp页面。
6、为了确保系统的安全,将所有的jsp页面放在WEB-INF下,这个路径是不能直接访问的,所以还需要一个跳转的Action。
public class ToLoginAction implements Controller { @Override public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception { return new ModelAndView("login"); } }