通过eclipse配置Spring MVC项目

  上一篇刚建立了一个简单的Spring项目,其实Spring MVC是一个和Struts2一样的基于MVC设计模式的web框架,并且继承了MVC的优点,是基于请求驱动的轻量级的web框架,spring mvc可以认为是spring其中的一个web扩展,小巧灵活,但是功能强大,可以直接传入ServletAPI使用起来开发会比较简单顺手,并且通过配置注解的方式,很轻松的对web资源进行管理,提高了开发的速度和应用程序的可维护性

  使用spring mvc可以设计出干净的web层和薄薄的web层;目前非常流行的就是SSM的这种整合,就是Spring + Spring MVC + MyBatis的结合,这样更适合复杂的企业级web应用,下面开发一个简单的Spring MVC应用

  需要的jar包和Spring一样,直接将上篇Spring配置需要的jar包拷贝过去即可,并且以后整合的时候也不需要额外添加jar包了,更简单

  首先是配置web.xml原理就是在web容器初始化时加载配置,让DispatcherServlet过滤器过滤浏览器发出的请求,从而启动Spring MVC进行处理,web.xml全部代码如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" metadata-complete="true" version="3.1">
 3     <servlet>
 4         <servlet-name>spring</servlet-name>
 5         <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 6         <load-on-startup>1</load-on-startup>
 7     </servlet>
 8     <servlet-mapping>
 9         <servlet-name>spring</servlet-name>
10         <url-pattern>/</url-pattern>
11     </servlet-mapping>
12
13
14
15     <!-- spring 过滤器 防止post乱码 -->
16     <filter>
17         <filter-name>CharacterEncodingFilter</filter-name>
18         <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
19         <init-param>
20             <param-name>encoding</param-name>
21             <param-value>utf-8</param-value>
22         </init-param>
23     </filter>
24     <filter-mapping>
25         <filter-name>CharacterEncodingFilter</filter-name>
26         <url-pattern>/*</url-pattern>
27     </filter-mapping>
28 </web-app>

  后面使用了一个spring内置的过滤器,为了防止post请求出现乱码的情况,这样可以不用request和response设置编码了,但务必保证源代码文件之间编码的统一性,最好还是建议通过自定义过滤器设置编码

  然后在web.xml同目录下,也就是WEB-INF下建立spring-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:p="http://www.springframework.org/schema/p"
        xmlns:context="http://www.springframework.org/schema/context"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

    <context:component-scan base-package="net.zengzhiying.controller" />

    <!-- 模板存放位置 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <!-- 请求URL处理 -->
    <bean name="/hello" class="net.zengzhiying.controller.HelloWorldController"/>

</beans>

  首先,上面两个<bean>是必须配置的,<context:>是控制器包存放的位置,模板存放在/WEB-INF下,只能由控制器去渲染,浏览器是无法访问的,最下面一个<bean>就是请求的资源路由,例如这里就是:http://localhost:8080/项目名称/hello

  然后我们建立一个控制器,一个控制器只处理一个请求,必须实现Controller接口,位置必须是org.springframework.web.servlet.mvc.Controller,代码如下:

 1 package net.zengzhiying.controller;
 2
 3
 4
 5 import javax.servlet.http.HttpServletRequest;
 6 import javax.servlet.http.HttpServletResponse;
 7 import org.springframework.web.servlet.ModelAndView;
 8 import org.springframework.web.servlet.mvc.Controller;
 9
10
11
12 public class HelloWorldController implements Controller {
13     @Override
14     public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception {
15        ModelAndView mv = new ModelAndView();
16        //添加数据
17        mv.addObject("message", "Hello World!");
18        //设置视图名,视图解析器会根据该名字解析到具体的视图页面
19        mv.setViewName("hello");
20        return mv;
21     }
22 }

  我们的控制器命名必须是XxxController,首字母大写;实现Controller接口则必须重写handleRequest方法来实现请求,返回视图;视图在/WEB-INF/jsp下,文件名为:hello.jsp,视图代码如下:

 1 <%@ page language="java" contentType="text/html; charset=UTF-8"
 2     pageEncoding="UTF-8"%>
 3 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
 4 <html>
 5 <head>
 6 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
 7 <title>Hello World</title>
 8 </head>
 9 <body>
10 ${message}
11 </body>
12 </html>

  这样就可以正常完成请求了,现在启动服务器访问页面如下:

  

  我们现在有个疑问,一个控制器只能写一个方法确实太局限了,我们如果想处理多个请求怎么办,其实我们更常用的就是在一个控制器里面写多个方法,这样将功能模块分开,更加容易维护,除了配置spring-servlet.xml文件外,我们还可以使用,Spring3.1之后的新特性这个特性是和Servlet3.0兼容的,那就是使用注解的方式来进行定义,更加简单了,首先我们在spring-servlet.xml添加配置引入注解:

1 <!-- spring 3.1之后由RequestMappingHandlerAdapter和RequestMappingHandlerMapping代替 -->
2     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
3     <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>

  现在我们就可以使用注解了,上面的Context标签其实就是指定我们注解所生效的包的,现在我们建立一个新的控制器,这时候就不用实现Controller接口了,这个时候控制器位置是:org.springframework.stereotype.Controller,代码如下:

 1 package net.zengzhiying.controller;
 2
 3 import javax.servlet.http.HttpServletRequest;
 4 import javax.servlet.http.HttpServletResponse;
 5
 6 import org.springframework.stereotype.Controller;
 7 import org.springframework.web.bind.annotation.RequestMapping;
 8 import org.springframework.web.servlet.ModelAndView;
 9
10
11 @Controller("PostTest")
12 public class PostTest {
13
14     @RequestMapping("/post.htm")
15     public ModelAndView post() {
16         return new ModelAndView("post");
17     }
18
19
20     @RequestMapping("/post.html")
21     public ModelAndView post2() {
22         return new ModelAndView("hello");
23     }
24
25     @RequestMapping("post3")
26     public String post3() {
27         return "hello";
28     }
29
30
31     @RequestMapping("/post")
32     public ModelAndView post1(HttpServletRequest request, HttpServletResponse response) {
33         String input = request.getParameter("name");
34         ModelAndView mv = new ModelAndView();
35         mv.addObject("input", input);
36         mv.setViewName("post");
37         return mv;
38     }
39
40 }

  看这个控制器我们会发现Spring MVC注解作用其实非常强大,我们首先通过@Controller对控制器进行注解,然后通过@RequestMapping进行注解,要访问的路由也可以自由定义,配合数组和通配符可以实现更多样化更强大的处理功能;返回视图可以是ModelAndView类型的,也可以简单的返回String类型的,直接以字符串返回文件名就可以了,并且在参数里可以直接使用HttpServletRequest、HttpServletResponse等ServletAPI可以用Servlet的方式直接编写,难度也降低了不少

  以上就是基本的spring mvc配置的过程,总体来说spring mvc是一个非常简洁优雅的框架,使用Spring MVC开发web应用同样是个不错的选择!

时间: 2024-08-27 05:31:02

通过eclipse配置Spring MVC项目的相关文章

用Eclipse建spring mvc项目(图解)

最近工作需要快速了解spring mvc架构,于是在网上找了很多相关教程.说真的,百度出来的基本都一样,但是我却遇到各种奇奇怪怪的问题.当然,做完之后回头看,发现那些问题都不是问题,哈哈哈哈~主要还是不懂java这些东西,遇到问题的时候就会觉得很难,各种查,但是百度的结果又是让人很无奈,不同的网址,相同的内容! 我参考了一个博客来建项目,网址是:http://limingnihao.iteye.com/blog/830409.按照这个博客的流程创建了项目,但是由于实际情况的不同,中间还是有一些不

Eclipse使用Maven创建Spring MVC项目(包含实例)以及部署到tomcat服务器

1.安装Maven并配置环境变量 2.eclipse中配置Maven 3.eclipse创建Maven项目 选择项目路径,next 选择maven项目类别[maven-archetype-webapp],next 输入Group Id(顶级包名),Artifact Id(项目名),Package根据两者自动生成,finish 生成的项目如上图所示. 报错原因是缺失Server Runtime Library,添加即可,同时jre替换为System Library. 替换后项目目录如下: src文

Eclipse Maven构建Spring MVC项目

工作中项目开发使用Maven管理项目的构建.打包.编译,框架采用的是Spring MVC框架,并且实现了多模块.多项目的管理.自己也简单的参与了架构的设计.对于初学者来说,使用Maven构建项目并不是一件容易的事情,本文的目的就是引导新手使用maven构建springmvc项目. 准本工作 1.Eclipse 尽量选用较高版本的Eclispse,因为eclipse对于maven的支持比较晚. 2.Maven 安装maven,至于其安装方式这里也就不再多提了,请自行google. 3.Eclips

eclipse下创建maven spring MVC 项目

一.创建maven项目 1.创建准备工作  -eclipse (本人使用的是Neon.3 Release (4.6.3)版本,此版本用使用jdk 1.8)  -jdk1.8.0_101  -maven-3.5.0  上面这些不要求一样,其他版本大致也是一样的. 首先安装maven,在eclipse上配置好User Setting,如下: 2.选择File→new→other→Maven→Maven Project,这里我们选择创建maven项目 第一步选择完maven project后,我们选择

Myeclipse/STS 首次在本地部署配置一个Spring MVC 项目 (十二)

1. 在本地新创建一个文件夹 ,做为项目工作空间; 2. 用 Myeclipse 或 STS 进入该文件夹,该文件夹就成为项目的工作空间: 3. 就要进 窗口-首选项,配置: 环境默认编码: 1>. 常规下面 内容类型 .txt 文本 UTF-8 更新 2>. 常规 – 工作空间 , 文本文件编码 3>. 常规 – 编辑器 – 文本编辑器 – 拼写 配置 java JDK 为 项目需要的版本 比如 (1.7) : 配置 Myeclipse 下的 Servers 及 validation 

如何在Web项目中配置Spring MVC

要使用Spring MVC需要在Web项目配置文件中web.xml中配置Spring MVC的前端控制器DispatchServlet 1 <servlet> 2 <servlet-name>SpringMVC</servlet-name> 3 <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> 4 <!-- 默认所对应的配置文件是

maven Spring MVC项目

IntelliJ IDEA上创建maven Spring MVC项目 各软件版本 利用maven骨架建立一个webapp 建立相应的目录 配置Maven和SpringMVC 配置Maven的pom.xml 配置web.xml 配置contextConfigLocation文件 配置log4j.properties controller和view的编写 servlet容器的配置和运行 配置本地的tomcat服务器 配置maven插件 运行第一个Spring MVC应用 目前java开发主流的IDE

第一个使用Spring Tool Suite(STS)和Maven建立的Spring mvc 项目

一.目标 在这篇文章中.我将要向您展示怎样使用Spring Frameworks 和 Maven build创建您的第一个J2ee 应用程序. 二.信息 Maven是一个java项目的构建工具(或者自己主动构建工具).它与Ant或Gradle非常想.Maven能够自己主动下载您项目中依赖的组件. 三.要求 1.应用于Java EE 的Spring Tool Suite(STS) (http://spring.io/tools/sts/all). 请选择与您的操作系统相应的安装文件. 我比較喜欢下

Java Spring MVC项目搭建(一)——Spring MVC框架集成

1.Java JDK及Tomcat安装 我这里安装的是JDK 1.8 及 Tomcat 8,安装步骤详见:http://www.cnblogs.com/eczhou/p/6285248.html 2.下载Eclipse并安装 我这里安装的是Java EE neon 64位版本. 3.建立Spring MVC项目 3.1.打开安装好的eclipse ,选择File->new->other.在弹出的框内选择Web->Dynamic Web Project , 选择Next. 3.2.给项目起