基于XML配置的Spring MVC(所需jar包,web.xml配置,处理器配置,视图解析器配置)

简介: 1、添加jar 2、web.xml配置 <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5"  xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

1、添加jar

2、web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
 xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
 http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
   
 <!-- 配置springMvC的分发器servlet -->
 <servlet>
  <servlet-name>action</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!-- 通过初始化参数指定配置文件的位置 -->
  <init-param>
   <param-name>contextConfigLocation</param-name>
   <param-value>classpath:action-servlet.xml</param-value>
  </init-param>
 </servlet>
 <servlet-mapping>
  <servlet-name>action</servlet-name>
  <url-pattern>*.do</url-pattern>
 </servlet-mapping>
 
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>
3、配置action-servlet.xml

<?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:mvc="http://www.springframework.org/schema/mvc"
 xmlns:context="http://www.springframework.org/schema/context"
 xmlns:aop="http://www.springframework.org/schema/aop"
 xmlns:tx="http://www.springframework.org/schema/tx"
 xsi:schemaLocation="http://www.springframework.org/schema/beans
      http://www.springframework.org/schema/beans/spring-beans.xsd
      http://www.springframework.org/schema/mvc
      http://www.springframework.org/schema/mvc/spring-mvc-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 ">
 
 <!-- bean名url处理器映射 默认-->
 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping">
  <property name="order" value="3"></property>
 </bean>
 
 <!-- 简单url处理器映射 -->
 <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  <property name="mappings">
   <props>
    <prop key="/home.do">homeController</prop>     //通过这个配置,对应id是homeController的可以通过这四个地址访问。
    <prop key="/a.do">homeController</prop>
    <prop key="/b.do">homeController</prop>
    <prop key="/c.do">homeController</prop>
   </props>
  </property>
  <property name="order" value="2"></property>
 </bean>
 
 <!-- 控制器类名处理器映射 -->
 <bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
  <property name="order" value="1"></property>
 </bean>
 
 <!-- 自定义控制器 http://localhost/SpringMVC_01/home.do-->
 <bean id="homeController" name="/hello.do" class="cn.itcast.springmvc.controller.HomeController"></bean>
 
 <!-- 命令控制器 -->
 <bean name="/command.do" class="cn.itcast.springmvc.controller.MyCommandController"></bean>
 
 <!-- 表单控制器 -->
 <bean name="/form.do" class="cn.itcast.springmvc.controller.MyFormController">
  <property name="successView" value="success"></property>      name必须是successView,这里对应的是success.jsp
  <property name="formView" value="userForm"></property>            formView必须是userForm,这里对应的是userForm.jsp
 </bean>
 
 <!-- 向导表单控制器 -->
 <bean name="/wizard.do" class="cn.itcast.springmvc.controller.MyWizardFormController">
  <property name="pages">
   <!-- 逻辑名 -->
   <list>
    <value>wizard/1</value>     对应的是wizard中的1.jsp
    <value>wizard/2</value>                                         2.jsp
    <value>wizard/3</value>                                         3.jsp
   </list>
  </property>
 </bean>
 
 <!-- 配置视图解析器 -->
 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <!-- 前缀 -->
  <property name="prefix" value="/WEB-INF/jsps/"></property>
  <!-- 后缀 -->
  <property name="suffix" value=".jsp"></property>
 </bean>
</beans>
4、编写实体bean:

package cn.itcast.springmvc.domain;

public class User {
 private String name;
 private String address;
 private Integer age;
 private String tel;
 
 /**
  * @return the name
  */
 public String getName() {
  return name;
 }
 
 /**
  * @param name the name to set
  */
 public void setName(String name) {
  this.name = name;
 }
 
 /**
  * @return the address
  */
 public String getAddress() {
  return address;
 }
 /**
  * @param address the address to set
  */
 public void setAddress(String address) {
  this.address = address;
 }
 
 /**
  * @return the age
  */
 public Integer getAge() {
  return age;
 }
 
 /**
  * @param age the age to set
  */
 public void setAge(Integer age) {
  this.age = age;
 }
 
 /**
  * @return the tel
  */
 public String getTel() {
  return tel;
 }
 
 /**
  * @param tel the tel to set
  */
 public void setTel(String tel) {
  this.tel = tel;
 }
}

5、编写HomeController,代码如下:

package cn.itcast.springmvc.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class HomeController extends AbstractController {

 @Override
 protected ModelAndView handleRequestInternal(HttpServletRequest req,
   HttpServletResponse resp) throws Exception {
  String name = req.getParameter("name");
  String msg = "hello " + name + " !";
  System.out.println("HomeController...");
  return new ModelAndView("helloworld","msg",msg);
 }

}

6、HomeController返回到的页面未:helloworld.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>
  <head>
    <title> 'helloworld.jsp'</title>
  
  </head>
 
  <body>
    This is helloworld.jsp<br>
    ${requestScope.msg}
  </body>
</html>

7、编写MyCommandController,代码如下:

package cn.itcast.springmvc.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractCommandController;

import cn.itcast.springmvc.domain.User;

/**
 *命令控制器
 */
public class MyCommandController extends AbstractCommandController {
 
 public MyCommandController(){
  //注册命令类
  this.setCommandClass(User.class);
  //命令名称
  this.setCommandName("user");
 }

 @Override
 protected ModelAndView handle(HttpServletRequest request,
   HttpServletResponse response, Object command, BindException errors)
   throws Exception {
  User u = (User)command;
  System.out.println("name:" + u.getName() + " address:" + u.getAddress());
  return new ModelAndView("commandView","user",u);
 }

}

8、commandView.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>
  <head>
    <title> 'commandView.jsp'</title>
  
  </head>
 
  <body>
    This is commandView.jsp<br>
    name:${user.name }<br>
    address:${user.address }<br>
    age:${user.age }<br>
    tel:${user.tel }
  </body>
</html>

9、MyFormController

package cn.itcast.springmvc.controller;

import org.springframework.web.servlet.mvc.SimpleFormController;

import cn.itcast.springmvc.domain.User;

public class MyFormController extends SimpleFormController {

 public MyFormController() {
  this.setCommandClass(User.class);
  this.setCommandName("user");
 }

 @Override
 protected void doSubmitAction(Object command) throws Exception {
  User u = (User)command;
  System.out.println(u.getName());
  System.out.println("doSubmitAction");
  super.doSubmitAction(command);
 }

}

对应的userForm.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<html>
  <head>
    <title> 'userForm.jsp'</title>
  
  </head>
 
  <body>
    <form action="<%=path%>/form.do" method="post">
     name:<input type="text" name="name"><br>
     age:<input type="text" name="age"><br>
     address:<input type="text" name="address"><br>
     tel:<input type="text" name="tel"><br>
     <input type="submit" value="submit"/>
    </form>
  </body>
</html>

对应的success.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<html>
  <head>
    <title> 'success.jsp'</title>
  </head>
 
  <body>
     This is success.jsp!
  </body>
</html>

10、MyWizardFormController的代码如下:

package cn.itcast.springmvc.controller;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.validation.BindException;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractWizardFormController;

import cn.itcast.springmvc.domain.User;

public class MyWizardFormController extends AbstractWizardFormController {
 
 public MyWizardFormController(){
  this.setCommandClass(User.class);
  this.setCommandName("user");

 }

 @Override
 protected ModelAndView processCancel(HttpServletRequest request,
   HttpServletResponse response, Object command, BindException errors)
   throws Exception {
  return new ModelAndView("helloworld");          //跳转到helloworld.jsp
 }
 
 @Override
 protected ModelAndView processFinish(HttpServletRequest request,
   HttpServletResponse response, Object command, BindException errors)
   throws Exception {
  User u = (User) command;
  System.out.println(u);
  return new ModelAndView("helloworld");     //跳转到helloworld.jsp
 }

}

相应的WEB-INF/wizard/1.jsp
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
  <head>
    <title> '1.jsp'</title>
  
  </head>
 
  <body>
    <form action="<%=path %>/wizard.do" method="post">
     name:<input type="text" name="name" value="${requestScope.user.name}"><br>            //标出的颜色区域可以用于回显
     <input type="submit" name="_cancel" value="取消"/>        //必须有下划线,且值是确定的
     <input type="submit" name="_target1" value="下一步"/>    //必须有下划线,且值是确定的
    </form>
  </body>
</html>

相应的WEB-INF/wizard/2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
  <head>
    <title> '2.jsp'</title>
  
  </head>
 
  <body>
    <form action="<%=path %>/wizard.do" method="post">
     address:<input type="text" name="address" value="${requestScope.user.address }"><br>
     <input type="submit" name="_target0" value="上一步"/>    //表示跳转到最开始的页面。
     <input type="submit" name="_cancel" value="取消"/>
     <input type="submit" name="_target2" value="下一步"/>    
    </form>
  </body>
</html>

相应的WEB-INF/wizard/3.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<html>
  <head>
    <title> '3.jsp'</title>
  
  </head>
 
  <body>
    <form action="<%=path %>/wizard.do" method="post">
     age:<input type="text" name="age" value="${requestScope.user.age }"><br>
     tel:<input type="text" name="tel" value="${requestScope.user.tel }"><br>
     <input type="submit" name="_target1" value="上一步"/>
     <input type="submit" name="_cancel" value="取消"/>
     <input type="submit" name="_finish" value="完成"/>
    </form>
  </body>
</html>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

目录
相关文章
|
16天前
|
前端开发 Java Spring
关于spring mvc 的 addPathPatterns 拦截配置常见问题
关于spring mvc 的 addPathPatterns 拦截配置常见问题
|
1月前
|
前端开发 安全 Java
技术进阶:使用Spring MVC构建适应未来的响应式Web应用
【9月更文挑战第2天】随着移动设备的普及,响应式设计至关重要。Spring MVC作为强大的Java Web框架,助力开发者创建适应多屏的应用。本文推荐使用Thymeleaf整合视图,通过简洁的HTML代码提高前端灵活性;采用`@ResponseBody`与`Callable`实现异步处理,优化应用响应速度;运用`@ControllerAdvice`统一异常管理,保持代码整洁;借助Jackson简化JSON处理;利用Spring Security增强安全性;并强调测试的重要性。遵循这些实践,将大幅提升开发效率和应用质量。
57 7
|
1月前
|
前端开发 测试技术 开发者
MVC模式在现代Web开发中有哪些优势和局限性?
MVC模式在现代Web开发中有哪些优势和局限性?
|
28天前
|
数据处理 Python
Django视图:构建动态Web页面的核心技术
Django视图:构建动态Web页面的核心技术
|
2月前
|
开发者 前端开发 Java
架构模式的诗与远方:如何在MVC的田野上,用Struts 2编织Web开发的新篇章
【8月更文挑战第31天】架构模式是软件开发的核心概念,MVC(Model-View-Controller)通过清晰的分层和职责分离,成为广泛采用的模式。随着业务需求的复杂化,Struts 2框架应运而生,继承MVC优点并引入更多功能。本文探讨从MVC到Struts 2的演进,强调架构模式的重要性。MVC将应用程序分为模型、视图和控制器三部分,提高模块化和可维护性。
39 0
|
2月前
|
Java Spring Maven
Struts 2遇见Spring:这个组合如何颠覆你的Web开发?
【8月更文挑战第31天】在现代Web开发中,Struts 2与Spring的结合使用能显著增强应用的模块化和可维护性。本文将介绍如何整合这两个框架,并提供代码示例。首先,在`pom.xml`中添加Struts 2和Spring的依赖,然后在`struts.xml`中配置Struts 2以识别Spring插件。接着,在Spring配置文件中定义bean,并在Struts 2的Action类中使用`@Autowired`注解进行自动注入。
31 0
|
2月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`&lt;s:checkbox&gt;`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
74 0
|
2月前
|
Java Spring
🔥JSF 与 Spring 强强联手:打造高效、灵活的 Web 应用新标杆!💪 你还不知道吗?
【8月更文挑战第31天】JavaServer Faces(JSF)与 Spring 框架是常用的 Java Web 技术。本文介绍如何整合两者,发挥各自优势,构建高效灵活的 Web 应用。首先通过 `web.xml` 和 `ContextLoaderListener` 配置 Spring 上下文,在 `applicationContext.xml` 定义 Bean。接着使用 `@Autowired` 将 Spring 管理的 Bean 注入到 JSF 管理的 Bean 中。
44 0
|
2月前
|
Java Spring Apache
Spring Boot邂逅Apache Wicket:一次意想不到的完美邂逅,竟让Web开发变得如此简单?
【8月更文挑战第31天】Apache Wicket与Spring Boot的集成提供了近乎无缝的开发体验。Wicket以其简洁的API和强大的组件化设计著称,而Spring Boot则以开箱即用的便捷性赢得开发者青睐。本文将指导你如何在Spring Boot项目中引入Wicket,通过简单的步骤完成集成配置。首先,创建一个新的Spring Boot项目并在`pom.xml`中添加Wicket相关依赖。
64 0
|
2月前
|
Java 前端开发 Apache
Apache Wicket与Spring MVC等Java Web框架大PK,究竟谁才是你的最佳拍档?点击揭秘!
【8月更文挑战第31天】在Java Web开发领域,众多框架各具特色。Apache Wicket以组件化开发和易用性脱颖而出,提高了代码的可维护性和可读性。相比之下,Spring MVC拥有强大的生态系统,但学习曲线较陡;JSF与Java EE紧密集成,但在性能和灵活性上略逊一筹;Struts2虽成熟,但在RESTful API支持上不足。选择框架时还需考虑社区支持和文档完善程度。希望本文能帮助开发者找到最适合自己的框架。
33 0

推荐镜像

更多