【JavaEE】Springmvc搭建方法及example

现在介绍SSH的文章很多,但是适合自己需求的却经常找不到,这些东西呢,会了之后总会感觉别人的程序哪里哪里别扭,会之前呢就感觉很混乱,而且SSH的官方文档,至少在我看来是“会者勉强能看、不会者一片迷茫”的,最主要的是没有什么demo,也可能因为我太low了,高手勿喷,我的感觉就是根据文档呢很容易明白如果写了A就能怎么样写了B又能怎么样,但是这个A或者B到底写在哪能让程序跑起来呢,更是会者不难、难者不会。我隔了两年没有做这方面的项目,最近重新拾起来,不再用struts,用spring、spring mvc、hibernate、spring security、spring oauth2搭建网站,这篇包括下面几篇文章,我会简述我搭建最基本环境的过程并给出demo,然后再详细地讲一些配置。

在各个文章我会分别介绍:

springmvc(本文)

springmvc+spring

springmvc+spring+hibernate

springmvc+spring+spring security

springmvc+spring+spring security+spring oauth2

springmvc+spring+hibernate+spring security+spring oauth2

这篇文章就来介绍springmvc环境的搭建。

1. pom.xml

首先来看都需要加入哪些包,我使用maven来管理包的依赖。

<properties>
    <spring.version>4.0.4.RELEASE</spring.version>
</properties>

<dependencies>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>${spring.version}</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet.jsp.jstl</groupId>
        <artifactId>javax.servlet.jsp.jstl-api</artifactId>
        <version>1.2.1</version>
    </dependency>
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
    <dependency>
        <groupId>tomcat</groupId>
        <artifactId>servlet-api</artifactId>
        <version>5.5.23</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>tomcat</groupId>
        <artifactId>jsp-api</artifactId>
        <version>5.5.23</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>commons-fileupload</groupId>
        <artifactId>commons-fileupload</artifactId>
        <version>1.3.1</version>
    </dependency>
    <dependency>
        <groupId>org.hibernate</groupId>
        <artifactId>hibernate-validator</artifactId>
        <version>5.1.2.Final</version>
    </dependency>
    <dependency>
        <groupId>org.codehaus.jackson</groupId>
        <artifactId>jackson-mapper-asl</artifactId>
        <version>1.9.13</version>
    </dependency>
</dependencies>

核心的包就是spring-webmvc,这个包导入之后会自动导入spring-core,spring-web等它的依赖包;

后面jstl、taglibs等包的导入是为了在jsp页面中使用jstl等标签;

commons-fileupload是为了文件上传的需要,本demo中没有上传文件的部分,不过哪个网站能没有上传图片呢?

hibernate-validator的导入是为了正常使用springmvc的valid,springmvc的valid只有接口没有实现,如果要使用它的功能需要导入一个实现包,导入hibernate-validator就是为了这个目的,本文的demo里面没有用到validation,所以只是为了运行基本demo,这个可以不导入;

jackson-mapper的导入是为了使用springmvc返回json的功能,对于这个功能springmvc也是只有接口没有实现,如果不导入实现包,要返回json时会返回406错误。jackson-core包会作为依赖导入。

2. web.xml

springmvc和struts的一个机制上的区别就是,struts是一层一层的拦截器在过滤,springmvc是只有一个核心的Servlet,所以首先按照正常注册Servlet的方法,在web.xml中注册这个springmvc:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    metadata-complete="true" version="3.0">

    <servlet>
        <servlet-name>spring-dispatcher</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>spring-dispatcher</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

springmvc还要做很多配置,那些配置在单独的配置文件里,这个配置文件的默认位置就是在web.xml相同目录下的<servlet-name>-servlet.xml,比如我的servlet-name配置的是spring-dispatcher,那么我的springmvc配置文件的默认位置就是web.xml同目录下的spring-dispatcher-servlet.xml。

3. spring-dispatcher-servlet.xml

下一步就是配置springmvc,编辑WEB-INF/spring-dispatcher-servlet.xml:

<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-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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">

    <context:component-scan base-package="org.zhangfc.demo4springmvc.mvc"/>

    <mvc:annotation-driven />

    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/pages/"/>
        <property name="suffix" value=".jsp"/>
    </bean>

    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <property name="defaultEncoding" value="UTF-8"/>
        <property name="maxUploadSize" value="2000000"/>
    </bean>

    <mvc:resources mapping="/static/**" location="/resources/"/>

    <mvc:default-servlet-handler />

</beans>

Springmvc的虚拟路径与处理函数的映射,是通过annotation来设置的,这些类都在哪个包下面,就是那个component-scan属性配置的,并设置支持annotation支持,springmvc的每一个处理函数都会返回一个String类型的变量(有的函数返回值就是String,有的返回值是一个对象,对象里有一个viewResolver需要的字符串),我这个设置就是设置一个前缀和后缀,举个例子来说,对于函数返回的这个String,比如是abc,那么需要渲染的文件就是/pages/abc.jsp。

multipartResolver是上传文件需要的配置,还是那句话,本demo中用不到,不过还是写上,哪个项目里不需要上传点东西呢。

最后一个属性,是对静态资源的映射,经过这个映射之后,要访问/static/a.png时,实际访问的就是/resources/a.png。

4. HomeController.java

下面来写一个控制器,位置在上面component-scan配置的package下,springmvc用RequestMapping的annotation来指定虚拟路径,把类这一级的和方法级的加在一起就是最终的虚拟路径,看这段代码:

@Controller
@RequestMapping("/")
public class HomeController {
    @RequestMapping("")
    public String home(){
        return "index";
    }

    @RequestMapping("/json")
    @ResponseBody
    public Map<String, String> json(){
        Map<String, String> result = new HashMap<String, String>();
        result.put("zhangsan", "hello");
        result.put("lisi", "world");
        result.put("wangwu", "nihao");
        return result;
    }
}

这儿类这个级别的RequestMapping的值是"/",home这个方法级别的呢值是空,两个加起来就是"/",而json这个方法的RequestMapping是"/json",所以,当访问的URL是"/"的时候,会调用home这个方法来处理,返回值是一个字符串index,还记得前面的viewResolver吗,根据那个配置,这个方法执行完成之后会渲染/pages/index.jsp,所以在WEB-INF的同级目录下创建pages目录(也就是WEB-INF的兄弟目录),再创建index.jsp,运行整个工程,访问"http://localhost:8080/demo4springmvc/"得到的就是index.jsp,因为json方法有一个@ResponseBody的annotation,它的返回值直接给客户端,所以访问"http://localhost:8080/demo4springmvc/json"得到的就是json串:

{"lisi":"world","zhangsan":"hello","wangwu":"nihao"}

源码下载

这是springmvc的最基本的demo,详细的用法,我会各个框架整合在一起之后再写。

时间: 2024-10-06 11:45:13

【JavaEE】Springmvc搭建方法及example的相关文章

【JavaEE】Springmvc+Spring+Hibernate搭建方法及example

前面两篇文章,分别介绍了Springmvc和Spring的搭建方法,本文再搭建hibernate,并建立SSH最基本的代码结构. Hibernate和前面两个比就比较复杂了,Hibernate是一个orm的框架,也就是负责面向对象中的对象(Object)和关系型数据库这个关系(Relation)之间的映射(Mapping).因为关系型数据库的思维方式,和编程的时候对于对象的理解是有偏差的,所以也有一些面向对象的数据库,但是随着这些orm框架的完善,面向对象的数据库就销声匿迹了. 当然,我这篇文章

Springmvc+Spring+Hibernate搭建方法及实例

Springmvc+Spring+Hibernate搭建方法及实例

springmvc搭建环境时报No mapping found for HTTP request with URI [/exam3/welcome] in DispatcherServlet with name &#39;spring2&#39;

项目是使用spring MVC (1)在浏览器中访问,后台总报错: Java代码   No mapping found for HTTP request with URI [/exam3/welcome] in DispatcherServlet with name 'spring2' 查了好半天,才发现是controller 没有扫描到. 我是使用的注解. spring mvc配置文件如下: Xml代码   <?xml version="1.0" encoding="

HHvm建站环境搭建方法:Nginx,Mariadb,hhvm及lnmp/lamp安装部署 | 免费资源部落

HHvm建站环境搭建方法:Nginx,Mariadb,hhvm及lnmp/lamp安装部署 | 免费资源部落 nginx对redis取数据的不同方式 - 守望

〖Linux〗PPTP_VPN 搭建方法

PPTP pptp还是比较老牌了,它是基于七层网络模型中的第二层,稳稳的 接下来介绍pptp vpn搭建和连接的方法,一般我使用它是为了打通各个网段(通常是持续集成环境上) 搭建步骤 Server 安装依赖包 依赖很少,就一个pptpd sudo apt-get install pptpd 配置ppp分配的ip地址 sudo vi /etc/pptpd.conf # 修改配置 localip 10.1.0.1 remoteip 10.1.0.100-200 配置帐户密码 sudo vi /etc

HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客

HHvm Apache 2.4 Nginx建站环境搭建方法安装运行WordPress博客 VPS主机   2014年06月02日 17:20 评论» 文章目录 Debian上安装 CentOS上安装 Ubuntu上安装 装Wordpress HHvm安装小结 HHVM是一个强大的可以用于替代PHP的建站环境,出自Facebook团队,它是一个PHP的JIT(Just-In- Time)编译器,同时具有产生快速代码和即时编译的优点.实践证明HHVM可以明显地提升PHP执行速度,节省大量的服务器资源

WebVirtMgr的搭建方法介绍

WebVirtMgr的搭建方法介绍 WebVirtMgr搭建非常简单,主要步骤如下: (1)配置解析主机名 修改所以节点的/etc/hosts文件,是所以节点之间能够通过dns解析主机名. (2)客户端安装 1)安装KVM和Libvirt组件(略). 2)Libvirtd服务监听配置 修改/etc/sysconfig/libvirtd文件,去掉下面一行的注释,使Libvirt服务处于监听状态: vim /etc/sysconfig/libvirtd LIBVIRTD_ARGS="--listen

调试linux内核环境搭建方法(ddd+busybox+qemu+linux3.5.4内核)

环境搭建 1.1.准备工作 (1).qemu虚拟机 (2).busybox软件 (3).linux-3.5.4内核 (4).ddd 调试工具(终端中输入 sudo apt-get install ddd 安装) 1.2.编译内核 (1)建立工作目录:mkdir -p ~/work/qemu (2)切换到此目录:cd ~/work/qemu (3)下载 linux内 核 (4)解压内核:tar -jxvf linux-3.5.4.tar.bz2 (5)切换到linux-3.5.4目录: cd li

学习笔记---springMVC搭建

最近工作不是很忙,写项目总结总结学习和工作中的技术,标记... 我的环境配置: 操作系统 win 7 开发工具 STS web服务器 tomcat7 java jdk1.6 1. 项目的创建,我是参考下面这篇文章 http://fruzenshtein.com/setup-of-dynamic-web-project-using-maven/ 2. 相关jar包的引入 pom.xml中spring的配置 1 <properties> 2 <org.springframework-vers