这篇文章已被废弃。

现在,Deolin使用Maven构建项目,而不是下载Jar文件,使用Jetty插件调试项目,而不是外部启动Tomcat。

SpringMVC比起Servlet/JSP方便了太多

Web容器——Tomcat

访问http://tomcat.apache.org/download-90.cgi

根据操作系统,选择并下载Binary Distributions - Core下的zip文件,解压。

测试:运行%tomcat%\bin\startup.bat,浏览器访问localhost:8080…

成功。

下载JAR文件

http://repo.spring.io/release/org/springframework/spring/4.3.7.RELEASE/

如果想要选择其他的版本,改变链接中的4.3.7即可。

选择*-dist.zip即可。

构建项目

1.在eclipse Java EE中新建一个动态Web项目(Dynamic Web Project)

2.更改配置路径

3.声明依赖库

4.单纯在项目中声明jar文件,只能让eclipse能够找到这些jar文件,

使代码中引入这些类时不至于编译报错,但仅仅这样是不足的,

为了让Web容器也能访问到项目所需的jar文件,需要复制一份到WEB-INF/lib目录下。

5.编写web.xml

<?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"> <display-name>DemoApp</display-name> <servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value><!-- 等完成了SpringMVC的配置文件再来补全 --></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> </web-app>

6.生成并编写SpringMVC配置文件。

在此之前需要生成一个区别于“src”的全新的代码文件夹(Source Folder),专门用于存放配置文件。

对于会用到不止一个框架的JavaWeb项目来说,将所有的配置文件统一起来是合适的。

与“src”一样,“conf”内的文件会输出到项目的classpath中(与“src”内的java文件先编译成class文件输出不同的是,xml文件被直接复制到classpth中)。

<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-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!-- 注解处理器适配器、处理器映射器 -->
<mvc:annotation-driven /> <!-- 处理器(@controller) -->
<context:component-scan base-package="controller" /> <!-- 视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean> </beans>

7.补全web.xml

            <param-value>classpath:springframework/springmvc-servlet.xml</param-value>

8.web.xml已经完成,现在web容器可以基于web.xml内的<servlet/>和<servlet-mapping/>来将请求URL映射到指定的Servlet类(对于SpringMVC来说,是DispatcherServlet.class)上了。

但在此之前,需要让tomcat知道DemoApp的存在——指定tomcat的默认应用为本演示项目。

编辑%tomcat%\conf\server.xml,在最后的“Host”标签中添加“Context”标签。

尝试着启动tomcat(%tomcat%\bin\startup.bat)...

...结果是启动失败,控制台闪退。

Deolin尝试了很多次,还是没能在闪退前成功地将控制台窗口截图。

查看一下日志文件(%tomcat%\logs\catalina.*.log)

问题在于缺少了Apache Commons Logging库(http://commons.apache.org/proper/commons-logging/download_logging.cgi

下载解压完毕后,将jar文件复制到WEB-INF/lib

再次启动tomcat…

启动成功。

9.编写个控制器和JSP

/DemoApp/src/controller/ForumController.java

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping; @Controller
public class ForumController { @RequestMapping(value="/forum")
public String requestMethod(Model m) {
m.addAttribute("oneName", "oneValue");
System.out.println("Hey, there");
return "Forum";
} }

/DemoApp/WebContent/WEB-INF/jsp/Forum.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.util.*" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>title</TITLE>
</HEAD>
<BODY>
${oneName}
</BODY>
</HTML>

重启tomcat,浏览器访问  localhost:8080

(由于在tomcat配置文件的Context标签中定义了本应用的路径(path)为“/”,所以URL中没有“上下文”部分)

10.声明静态资源

比起测试通过,更有趣的事情是出现了一个新的警告。

每次请求时,tomcat会去访问Web应用根路径下的favicon.ico作为网页的图标,而这个请求会被DispatcherServlet认为是一个用来请求控制器的URI而拦截。

由于控制器中不存在映射了[/favicon.ico]的请求方法,那么自然会出现noHandlerFound警告

解决方法是为这个URI单独添加专门的映射。

/DemoApp/conf/springframework/springmvc-servlet.xml的<beans/>标签内。

    <!-- 为静态资源单独映射 -->
<mvc:resources mapping="/favicon.ico" location="/favicon.ico" />

单纯变更SpringMVC的配置文件并不需要重启tomcat,等应用完成了部署,浏览器再次访问  localhost:8080

警告消失了。

至此,Web项目便搭建和部署完成了。

远程Debug

1.首先要让tomcat开放用于Debug的端口。

编辑%tomcat%\bin\startup.bat

所有指令的前面添加一条指令

set CATALINA_OPTS=-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8000

测试:重启动tomcat

可以看到启动最初的消息中出现了新增配置中的信息。

2.在eclipse中启动Debug(初次启动)

Debug View显示Debug已经开始

添加断点

浏览器再次访问 localhost:8080。

断点正常工作。

3.退出Debug

远程Debug不影响tomcat,需要退出Debug模式仅仅需要在eclipse的Debug View中中断Debug即可。

4.日常启动Debug

初次配置过Debug以后,每次启动debug便不在需要配置,直接启动即可。

SpringMVC框架下Web项目的搭建与部署的更多相关文章

  1. ssm框架下web项目,web.xml配置文件的作用

    1. web.xml中配置了CharacterEncodingFilter,配置这个是拦截所有的资源并设置好编号格式. encoding设置成utf-8就相当于request.setCharacter ...

  2. 03、NetCore2.0下Web应用之搭建最小框架

    03.NetCore2.0下Web应用之搭建最小框架 这里我们不使用VS2017或者CLI命令的方式创建Asp.Net Core 2.0网页应用程序,而是完全手工的一点点搭建一个Web框架,以便更好的 ...

  3. SSM框架开发web项目系列(二) MyBatis真正的力量

    前言 上篇SSM框架环境搭建篇,演示了我们进行web开发必不可少的一些配置和准备工作,如果这方面还有疑问的地方,可以先参考上一篇“SSM框架开发web项目系列(一) 环境搭建篇”.本文主要介绍MyBa ...

  4. SSM框架开发web项目系列(三) MyBatis之resultMap及关联映射

    前言 在上篇MyBatis基础篇中我们独立使用MyBatis构建了一个简单的数据库访问程序,可以实现单表的基本增删改查等操作,通过该实例我们可以初步了解MyBatis操作数据库需要的一些组成部分(配置 ...

  5. SSM框架开发web项目系列(五) Spring集成MyBatis

    前言 在前面的MyBatis部分内容中,我们已经可以独立的基于MyBatis构建一个数据库访问层应用,但是在实际的项目开发中,我们的程序不会这么简单,层次也更加复杂,除了这里说到的持久层,还有业务逻辑 ...

  6. 使用Javamelody验证struts-spring框架与springMVC框架下action的訪问效率

    在前文中我提到了关于为何要使用springMVC的问题,当中一点是使用springMVC比起原先的struts+spring框架在效率上是有优势的.为了验证这个问题,我做了两个Demo来验证究竟是不是 ...

  7. (转)springMVC框架下JQuery传递并解析Json数据

    springMVC框架下JQuery传递并解析Json数据 json作为一种轻量级的数据交换格式,在前后台数据交换中占据着非常重要的地位.Json的语法非常简单,采用的是键值对表示形式.JSON 可以 ...

  8. 从壹开始前后端分离【 .NET Core2.0 +Vue2.0 】框架之七 || API项目整体搭建 6.2 轻量级ORM

    更新 1.在使用的时候,特别是更新数据的时候,如果不知道哪里有问题,可以查看数据库 和 实体类 的字段,是否大小写一致,比如 name 和 Name 2.在使用Sqlsugar 的 CodeFirst ...

  9. springmvc 项目完整示例01 需求与数据库表设计 简单的springmvc应用实例 web项目

    一个简单的用户登录系统 用户有账号密码,登录ip,登录时间 打开登录页面,输入用户名密码 登录日志,可以记录登陆的时间,登陆的ip 成功登陆了的话,就更新用户的最后登入时间和ip,同时记录一条登录记录 ...

随机推荐

  1. 浅谈人脸识别中的loss 损失函数

    浅谈人脸识别中的loss 损失函数 2019-04-17 17:57:33 liguiyuan112 阅读数 641更多 分类专栏: AI 人脸识别   版权声明:本文为博主原创文章,遵循CC 4.0 ...

  2. array_chunk — 将一个数组分割成多个

    说明 array_chunk ( array $array , int $size [, bool $preserve_keys = false ] ) : array 将一个数组分割成多个数组,其中 ...

  3. android 蓝牙连接端(客户端)封装

    0.权限  AndroidManifest.xml <uses-permission android:name="android.permission.BLUETOOTH"/ ...

  4. mysql 添加省市编码表

    省表格: --省级 Provincial create table Provincial(pid int,Provincial varchar(50),primary key (pid)) inser ...

  5. Go 标准库,常用的包及功能

    Go 的标准库 Go语言的标准库覆盖网络.系统.加密.编码.图形等各个方面,可以直接使用标准库的 http 包进行 HTTP 协议的收发处理:网络库基于高性能的操作系统通信模型(Linux 的 epo ...

  6. 使用Lua编写Wireshark插件解析KCP UDP包,解析视频RTP包

    前段时间写了一个局域网音视频通话的程序,使用开源 KCP 来实现可靠UDP传输. 通过研究发现KCP在发包时,会在数据包前面加上它自己的头.如果数据包较小,KCP可能会把多个数据包合成一个包发送,提高 ...

  7. sql基础的基础

    一.数据定义语言(DDL) create table alter table drop table create index alter index drop index create view dr ...

  8. Vs2017 NetCode Mvc EF Mysql 整合2

    1 NetCode EF整合 代码 3  源代码 https://github.com/chxl800/EFMysqlDemo 1.1 项目文件结构 1.2 NuGet  MySql.Data.Ent ...

  9. jajx 传参 需要 判断的 条件

    1.有没有权限. 2.数据类型 对不对 例如 id ,page  传过来时是str 类型, view中处理时需要转换成 int类型. 如果 不能转 就会报错.. 3.查询数据.数据不存在也要报错... ...

  10. mysql打开报错2013解决办法

    修改mysql配置文件 在[mysqld]下面设置skip-name-resolve 重启mysql from :https://www.jb51.net/article/52637.htm