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");
}
}
接下来就可以部署项目,通过http://localhost:8080/项目名/toLogin.do访问了。