首页 > 代码库 > SpringMVC--xxx.xml配置

SpringMVC--xxx.xml配置

<!--configure the setting of springmvcDispatcherServlet and configure the mapping--><servlet>    <servlet-name>springmvc</servlet-name>    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>    <init-param>          <param-name>contextConfigLocation</param-name>          <param-value>classpath:springmvc-servlet.xml</param-value>      </init-param>      <!-- <load-on-startup>1</load-on-startup> --></servlet> <servlet-mapping>    <servlet-name>springmvc</servlet-name>    <url-pattern>/</url-pattern></servlet-mapping>
<?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:mvc="http://www.springframework.org/schema/mvc"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">                         <!-- scan the package and the sub package -->    <context:component-scan base-package="test.SpringMVC"/>     <!-- don‘t handle the static resource -->    <mvc:default-servlet-handler />     <!-- if you use annotation you must configure following setting -->    <mvc:annotation-driven />         <!-- configure the InternalResourceViewResolver -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"            id="internalResourceViewResolver">        <!-- 前缀 -->        <property name="prefix" value="/WEB-INF/jsp/" />        <!-- 后缀 -->        <property name="suffix" value=".jsp" />    </bean></beans>

文件上传

  1.需要导入两个jar包

技术分享

2.在SpringMVC配置文件中加入

<!-- upload settings --><bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <property name="maxUploadSize" value="102400000"></property></bean>

3.方法代码

@RequestMapping(value="http://www.mamicode.com/upload",method=RequestMethod.POST)public String upload(HttpServletRequest req) throws Exception{    MultipartHttpServletRequest mreq = (MultipartHttpServletRequest)req;    MultipartFile file = mreq.getFile("file");    String fileName = file.getOriginalFilename();    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");            FileOutputStream fos = new FileOutputStream(req.getSession().getServletContext().getRealPath("/")+            "upload/"+sdf.format(new Date())+fileName.substring(fileName.lastIndexOf(‘.‘)));    fos.write(file.getBytes());    fos.flush();    fos.close();         return "hello";}

4.前台form表单

<form action="mvc/upload" method="post" enctype="multipart/form-data">    <input type="file" name="file"><br>    <input type="submit" value="submit"></form>

设置一个自定义拦截器

1.创建一个MyInterceptor类,并实现HandlerInterceptor接口

public class MyInterceptor implements HandlerInterceptor {     @Override    public void afterCompletion(HttpServletRequest arg0,            HttpServletResponse arg1, Object arg2, Exception arg3)            throws Exception {        System.out.println("afterCompletion");    }     @Override    public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,            Object arg2, ModelAndView arg3) throws Exception {        System.out.println("postHandle");    }     @Override    public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,            Object arg2) throws Exception {        System.out.println("preHandle");        return true;    } }

2.在SpringMVC的配置文件中配置

<!-- interceptor setting --><mvc:interceptors>    <mvc:interceptor>        <mvc:mapping path="/mvc/**"/>        <bean class="test.SpringMVC.Interceptor.MyInterceptor"></bean>    </mvc:interceptor>        </mvc:interceptors>

3.拦截器执行顺序

技术分享

整合SpringIOC和SpringMVC

1.创建一个test.SpringMVC.integrate的包用来演示整合,并创建各类

技术分享

 

 2.User实体类

public class User {    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public Date getBirth() {        return birth;    }    public void setBirth(Date birth) {        this.birth = birth;    }    @Override    public String toString() {        return "User [id=" + id + ", name=" + name + ", birth=" + birth + "]";    }        private int id;    @NotEmpty    private String name;     @Past    @DateTimeFormat(pattern="yyyy-MM-dd")    private Date birth;}

3.UserService类

@Componentpublic class UserService {    public UserService(){        System.out.println("UserService Constructor...\n\n\n\n\n\n");    }         public void save(){        System.out.println("save");    }}

4.UserController

@Controller@RequestMapping("/integrate")public class UserController {    @Autowired    private UserService userService;         @RequestMapping("/user")    public String saveUser(@RequestBody @ModelAttribute User u){        System.out.println(u);        userService.save();        return "hello";    }}

5.Spring配置文件

  在src目录下创建SpringIOC的配置文件applicationContext.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"    xsi:schemaLocation="http://www.springframework.org/schema/beans          http://www.springframework.org/schema/beans/spring-beans.xsd         http://www.springframework.org/schema/util         http://www.springframework.org/schema/util/spring-util-4.0.xsd        http://www.springframework.org/schema/context        http://www.springframework.org/schema/context/spring-context.xsd        "        xmlns:util="http://www.springframework.org/schema/util"        xmlns:p="http://www.springframework.org/schema/p"        xmlns:context="http://www.springframework.org/schema/context"           >    <context:component-scan base-package="test.SpringMVC.integrate">        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>        <context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>            </context:component-scan></beans>

在Web.xml中添加配置

<!-- configure the springIOC --><listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath:applicationContext.xml</param-value></context-param>

6.在SpringMVC中进行一些配置,防止SpringMVC和SpringIOC对同一个对象的管理重合

<!-- scan the package and the sub package -->    <context:component-scan base-package="test.SpringMVC.integrate">        <context:include-filter type="annotation"            expression="org.springframework.stereotype.Controller"/>        <context:include-filter type="annotation"            expression="org.springframework.web.bind.annotation.ControllerAdvice"/>    </context:component-scan>

SpringMVC详细运行流程图

技术分享

SpringMVC与struts2的区别

1、springmvc基于方法开发的,struts2基于类开发的。springmvc将url和controller里的方法映射。映射成功后springmvc生成一个Handler对象,对象中只包括了一个method。方法执行结束,形参数据销毁。springmvc的controller开发类似web service开发。

  2、springmvc可以进行单例开发,并且建议使用单例开发,struts2通过类的成员变量接收参数,无法使用单例,只能使用多例。

  3、经过实际测试,struts2速度慢,在于使用struts标签,如果使用struts建议使用jstl。

 

SpringMVC--xxx.xml配置