idea+maven+springmvc
黑了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, 都可以参考.
- 建立一个空的java项目, 在select type那里, 选择maven module, 项目名字什么的, 随便起一个
- 在下一个页面里, 什么都不改, 什么都不选, 点finish
默认打开了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>等待Intellij自动导入里面写的包
- 确保我们有一个跟src目录平级的web目录, 然后在里面简历一个目录叫WEB-INF. 说到这里, 就要说一下tomcat的webapp目录结构了. 首先要有一个WEB-INF目录, 然后在WEB-INF里, 有classes目录: 存放所有代码的目录; lib目录: 存放所有jar文件; web.xml文件, 存放webapp的配置.
编辑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.
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.
在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";
}
}看完了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的童鞋, 应该一看就明白了.
- 代码工作都完成啦, 下面就是部署了.
idea+maven+springmvc的更多相关文章
- maven+springmvc+dubbo+zookeeper
为什么要用dubbo? 还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm http://dubbo.io/ 一般 nginx+tomcat ...
- 使用intellij idea搭建MAVEN+springmvc+mybatis框架
原文:使用intellij idea搭建MAVEN+springmvc+mybatis框架 1.首先使用idea创建一个maven项目 2.接着配置pom.xml,以下为我的配置 <projec ...
- Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker)
Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomc ...
- IntelliJ IDEA下Maven SpringMVC+Mybatis入门搭建例子
很久之前写了一篇SSH搭建例子,由于工作原因已经转到SpringMVC+Mybatis,就以之前SSH实现简单登陆的例子,总结看看SpringMVC+Mybatis怎么实现. Spring一开始是轻量 ...
- idea搭建springdata+mongodb+maven+springmvc
idea搭建springdata+mongodb+maven+springmvc 今天我们来学习一下SpringData操作MongoDB. 项目环境:IntelliJ IDEA2017+maven3 ...
- 1.Maven+SpringMVC+Eclipse软件安装配置,Maven报插件错误,Eclipse总是卡死的解决办法,导入一个maven工程后 一直显示importing maven project
使用Maven+SpringMVC+Eclipse软件安装配置过程中的问题: 1.Eclipse总是卡死的解决办法: 一:内存不足所以会卡死,配置一下eclipse.ini修改这几个值就好了-X ...
- maven+springmvc的配置
1. 首先创建1个mavenweb项目 如果没有的话最好是去官网下载一个最新版本的eclipse 里面什么都有 maven/gradle 啥的 2. 选择路径 没啥影响 就是一个路径 默认就行 ...
- maven+springMVC+mybatis+sqlserver数据
因为之前搭好的是maven+springMVC+mybatis+mysql数据库环境,但是在实际工作项目是使用的sqlserver数据库,本文是针对数据库从mysql切换到sqlserver数据库 s ...
- 一步步完成Maven+SpringMVC+SpringFox+Swagger整合示例
本文给出一个整合Maven+SpringMVC+SpringFOX+Swagger的示例,并且一步步给出完成步骤. 本人在做实例时发现 http://blog.csdn.net/zth1002/art ...
- 关于Maven+Springmvc+Dubbo+Zookeeper整合
为什么要用dubbo? 还是让官方来解释吧: http://dubbo.io/User+Guide-zh.htm http://dubbo.io/ 一般 nginx+tomcat | - ...
随机推荐
- 高并发web系统设计
转载自:http://blog.csdn.net/qq_26562641/article/details/53170913 一.一般高并发web系统这里的一般指的是秒杀之类的电子商务系统,比如说小米抢 ...
- 【转】C#添加修改删除文件文件夹大全
[转]C#添加修改删除文件文件夹大全 C#添加修改删除文件文件夹大全 StreamWriter sw = File.AppendText(Server.MapPath(".")+& ...
- Python学习第一天-编写登陆接口
编写登陆接口 输入用户名密码 认证成功后显示欢迎信息 输错三次后锁定 帐号文件user.txt内容如下: qaz 123qwe 12345qweqwr 12321424...... 锁文件user_l ...
- Ubuntu ctrl+alt会导致窗口还原的问题
Ubuntu ctrl+alt会导致窗口还原的问题 本来以为是compizConfig的问题,后来在系统config中找到键盘>快捷键:恢复窗口,删除这个快捷键,就好了: 原来这里写的是ctrl ...
- oracle学习 第一章 简单的查询语句 ——03
1.1最简单的查询语句 例 1-1 SQL> select * from emp; 例 1-1 结果 这里的 * 号表示全部的列.它与在select 之后列出全部的列名是一样的.查询语句以分号( ...
- 求解n位格雷码
/************************************************************************* > File Name: Gray.cpp ...
- pyspark import 可以通过 --py-files
公用函数的放到了 common.py 文件中. 通过 --py-files 可以在pyspark中可以顺利导入: pyspark --py-files lib/common.py > impor ...
- hpuoj--校赛--与学妹滑雪(最短路+精度判断)
问题 G: 感恩节KK专场--与学妹滑雪 时间限制: 1 Sec 内存限制: 128 MB 提交: 284 解决: 25 [提交][状态][讨论版] 题目描述 这周下的雪好大好大,不过这正和KK学 ...
- django 笔记11 装饰器
在views.py创建 一般用来cookies的装饰器 def auth(func): def inner(request, *args, **kwargs): v = request.COOKIES ...
- docker 命令合集
目录 image镜像操作 container 容器操作 访问仓库 Repository 数据管理 使用网络 容器互联: image镜像操作 列出已经下载下来的镜像: docker image ls 查 ...