黑了Java这么多年, 今天为Java写一篇文章吧.

这篇文章主要是想帮助那些刚接触到Java, 同时想从事Java WEB GUI开发的人. 对我而言, 我很早就有想尝试用Java写WEB的想法, 可是没有一次成功过, 不管是用struts, 还是纯JSP, 总是配置不好, tomcat不能正确的运行我的程序.

自打那以后, 我一直在抱怨Java的application, 尤其是要部署于tomcat的, 太难了, 太复杂了. 而且还没有什么文档是专门讲这个, 全部都是讲如何用eclipse配置SSH, 然后开发, 然后部署. 对于一个不想使用eclipse的人, 简直无从下手.

好了, 不多说废话了, 今天我要讲的是Srping MVC的使用和tomcat的部署, 以及如何用maven来管理dependency. 我用的工具是Intellij IDEA, 不过我会说明程序的目录结构是什么样的, 这样不管你用什么IDE, 都可以参考.

  1. 建立一个空的java项目, 在select type那里, 选择maven module, 项目名字什么的, 随便起一个
  2. 在下一个页面里, 什么都不改, 什么都不选, 点finish
  3. 默认打开了pom.xml, 这个是maven的配置文件, 为了让程序能够自动倒入spring mvc和jsp, selvlet等的依赖, 我们在里面加入如下配置:

    <properties>
    <java-version>1.7</java-version>
    <org.springframework-version>3.1.3.RELEASE</org.springframework-version>
    </properties>
    <dependencies>
    <!-- Spring -->
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-context</artifactId>
    <version>${org.springframework-version}</version>
    </dependency>
    <dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring-webmvc</artifactId>
    <version>${org.springframework-version}</version>
    </dependency>
    <!-- servlet jsp and jstl -->
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.0.1</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>javax.servlet.jsp</groupId>
    <artifactId>jsp-api</artifactId>
    <version>2.0</version>
    <scope>provided</scope>
    </dependency>
    <dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>jstl</artifactId>
    <version>1.2</version>
    </dependency>
    </dependencies>
  4. 等待Intellij自动导入里面写的包

  5. 确保我们有一个跟src目录平级的web目录, 然后在里面简历一个目录叫WEB-INF. 说到这里, 就要说一下tomcat的webapp目录结构了. 首先要有一个WEB-INF目录, 然后在WEB-INF里, 有classes目录: 存放所有代码的目录; lib目录: 存放所有jar文件; web.xml文件, 存放webapp的配置.
  6. 编辑web.xml文件, 改成如下内容:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app 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_3_0.xsd"
    version="3.0">
    <!-- Handles all requests into the application -->
    <servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>/WEB-INF/spring/appServlet/servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
    <servlet-name>appServlet</servlet-name>
    <url-pattern>/</url-pattern>
    </servlet-mapping>
    </web-app>

    这段的内容, 是将url跳转到appServlet配置里, 在appServlet的配置里, 使用servlet-context.xml.

  7. servlet-context.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:context="http://www.springframework.org/schema/context"
    xmlns:mvc="http://www.springframework.org/schema/mvc"
    xsi:schemaLocation="http://www.springframework.org/schema/mvc
    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
    http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
    <!-- Scans the classpath of this application for @Components to deploy as beans -->
    <context:component-scan base-package="me.davidx.LearnJava" />
    <!-- Configures the @Controller programming model -->
    <mvc:annotation-driven />
    <!-- Resolves view names to protected .jsp resources within the /WEB-INF/views directory -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/" />
    <property name="suffix" value=".jsp" />
    </bean>
    </beans>

    这段的大概意思是, 自动扫描包”me.davidx.LearnJava”来找到controller定义. 同时, controller都使用@Controller来定义. bean里的定义, 表明所有的View文件都到/WEB-INF/views目录来找, 后缀都为.jsp.

  8. 在me.davidx.LearnJava包里, 定义一个HomeController类, 这里给一个范例:

    package me.davidx.LearnJava.controllers;
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.Model;
    import org.springframework.web.bind.annotation.RequestMapping;
    @Controller
    public class HomeController {
    @RequestMapping("/home")
    public String home(Model model) {
    model.addAttribute("message", "hello, world");
    //return "WEB-INF/views/home.jsp";
    return "home";
    }
    }
  9. 看完了controller的定义, 我们再来看看view文件: home.jsp:

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ page session="false" %>
    <html>
    <head>
    <title>Home</title>
    </head>
    <body>
    <h1><c:out value="${message}"/></h1>
    <h2>Again!</h2>
    </body>
    </html>

    这里使用了jstl, 以前写过jsp的童鞋, 应该一看就明白了.

  10. 代码工作都完成啦, 下面就是部署了.
本文出自:http://davidx.me, 原文地址:http://davidx.me/2012/11/18/how-to-use-intellij-to-use-spring-mvc/, 感谢原作者分享。
 
自己把整个过程跑了一遍,打了个war包,可以直接拿来看,不过springmvc3.0,
 
 

最新文章

  1. 阶段一:通过网络请求,获得并解析JSON数据(天气应用)
  2. canvas绘制二次贝塞尔曲线----演示二次贝塞尔四个参数的作用
  3. jdbcTemplate的Dao层封装
  4. fileinput模块
  5. Java中处理异常中return关键字
  6. 中文unicode范围及unicode编解码
  7. 深入浅出Java并发包—锁机制(三)
  8. Thread was being aborted.你遇到了吗?
  9. 分布式文件系统 Mogilefs 安装步骤
  10. thoughtworks家庭作业C++版本
  11. IDL实现 Modis经纬度查询、迅雷下载
  12. Git 二分调试法,火速定位疑难Bug!
  13. easyui 菜单树搜索
  14. Python3 Tcp未发送/接收完数据即被RST处理办法
  15. Spring中Model、ModelMap及ModelAndView之间的区别+传递参数
  16. 51NOD-1486 大大走格子
  17. Oracle ODP.NET vs Microsoft MSDP
  18. 红米5/红米5 Plus逼出最强魅蓝Note6?降价后已成性价比神机
  19. &raquo; Working Around JNI UTF-8 Strings Deprogramming
  20. 论DATASNAP远程方法支持自定义对象作参数

热门文章

  1. ASP.NET-使用事件监视诊断程序异常
  2. Android基础笔记(十三)- 内容提供者原理和简单使用
  3. hdu 2191 悼念512汶川大地震遇难同胞——珍惜如今,感恩生活
  4. HDOJ 5008 Boring String Problem
  5. Caused by: java.lang.ClassNotFoundException: com.njupt.libgdxbase.MainActivity
  6. 多线程02---pThread简单介绍
  7. vncserverpassword改动
  8. Android 经常使用工作命令mmm,mm,m,croot,cgrep,jgrep,resgrep,godir
  9. C&amp;C控制服务的设计和侦测方法综述——DDoS攻击,上传从宿主机偷窃的到的信息,定时给感染机文件加密勒索等。
  10. HBase框架基础(四)