Spring mvc 入门实例
1、MVC的请求流程
(1)客户端将请求提交到DispatcherServlet
(2) DispatcherServlet查询一个或多个HandlerMapping找到处理请求的Controler
(3)Dispatcher将请求提交到Controller
(4)conttroller调用业务逻辑处理后,返回ModelAndView
(5) DispatcherServlet 查询一个或多个ViewResolver视图解析器,找到ModelAndView指定的 视图
(6)视图负责将结果显示在客户端
2、Spring mvc 建立的步骤
(1)新建web project
(2)添加Spring 支持
(3)修改web.xml,配置DispatcherServlet
(4)实现Model层
(5)实现Controller层
(6)实现View层
(7)修改applicationContext.xml
3、web.xml的配置
<servlet> <servlet-name>DispatcherServlet</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>DispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping>
4、model层
public class Account {
private String id;
private String name;
private float balance;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public float getBalance() {
return balance;
}
public void setBalance(float balance) {
this.balance = balance;
}
}
5、Controller层
public class loginControler extends AbstractController { public String formView; public String successView; public String getFormView() { return formView; } public void setFormView(String formView) { this.formView = formView; } public String getSuccessView() { return successView; } public void setSuccessView(String successView) { this.successView = successView; } @Override protected ModelAndView handleRequestInternal(HttpServletRequest request, HttpServletResponse response) throws Exception { // 获取Id 和姓名 String id = request.getParameter("id"); String name = request.getParameter("name"); // 业务逻辑进行判断 Account account = getAccount(id, name); Map<String, Object> model = new HashMap<String, Object>(); if (account != null) { model.put("account", account); return new ModelAndView(getSuccessView(), model); } else { model.put("error", "找不到对象"); return new ModelAndView(getFormView(), model); } } public Account getAccount(String id, String name) { if (id.equals("123") && name.equals("456")) { Account account = new Account(); account.setId(id); account.setName(name); account.setBalance(1.23f); return account; } else { return null; } } }
6、配置applicationContext.xml的配置
<bean id="loginControler" class="com.yyw.servlet.loginControler"> <property name="formView" value="login"></property> <property name="successView" value="showAccount"></property> </bean> <!-- 配置controler和url地址的映射关系 --><!-- 比较固定在以后的开发过程中可以直接利用 --> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <prop key="/login.do">loginControler</prop> </props> </property> </bean> <!-- 配置视图解析器 --> <bean id="viewresolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean>
handlemapping和viewResolver的配置都比较固定,可以在实际开发过程中直接使用,只需要在loginController中进行定义即可