`

用SpringMVC搭建基本Web项目

阅读更多
因为觉得Struts2的路径映射方式很难看,就像学习一下Spring的web框架。这是第一篇学习记录

开发环境
IDE工具:   Eclipse Java EE IDE for Web Developers
Spring版本:3.2
Server:    Tomcat 7


操作一:导入Jar包

  各个模块是分着的,像jms和aspects这样的包可能用不到,不管三七二十一统统拷贝到/WEB-INF/lib下。但Spring比较坑的地方还需要一个:commons-logging-X.X.X.jar没提供,需自己去下。
问题:各个包都是做什么的?
看来我需要仔细看文档了。

操作二:配置web.xml(学名叫:deployment descriptor,部署描述文件)

注意mapping不能写成/*
<?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" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">


<servlet>
	<servlet-name>spring</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
</servlet>

<servlet-mapping>
	<servlet-name>spring</servlet-name>
        <!--下面千万不能写成/*-->
	<url-pattern>/</url-pattern>
</servlet-mapping>


<display-name>Demo</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


问题:为什么不能写成/*呢?
好像造成循环映射,具体我也说不清

操作三:创建DispatcherServlet的配置文件

文件名称和位置有一个约定:web.xml中<servlet-name>,加“-”,再加“servlet”,放在/WEB-INF下。
我的servlet名称是spring,那么我需要创建一个/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:mvc="http://www.springframework.org/schema/mvc"
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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd">

<mvc:annotation-driven/>

<!--使spring自动搜寻test包下用@Component注解的类-->
<context:component-scan base-package="test"/>

<!--viewResolver常见的配置,具体怎么回事,在控制器类说明-->
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  <property name="prefix" value="/WEB-INF/jsp/"/>
  <property name="suffix" value=".jsp"/>
  <property name="contentType" value="text/html; charset=utf-8"/>
</bean>

</beans>


在这个xml配置文件中还可以定义一些DispatcherServlet用到的特殊的类,有:
HandlerMapping
HandlerAdaptor
HandlerExceptionResolver
ViewResolver(如上例)
LocaleResolver
ThemeResolver
MultipartResolver
FlashMapManager
它们都有一些合理的默认值,所以不需要配置。这些默认值包含在
org.springframework.web.servlet.DispatcherServlet.properties文件中

问题:这些类都有什么作用?
问题:<mvc:annotation-driven/>都做了什么?

操作四:创建控制器。
这里再说明一下spring mvc的整体工作流程
根据web.xml中的配置,Tomcat会把所有的请求派发给名为spring的ServletDispatcher实例处理
ServletDispatcher会根据它配置文件中的设定,把请求映射给合适的控制器处理。控制器是处理业务逻辑的地方。具体是如何映射的继续往下看。

在src下创建包test,再创建类HelloController
package test;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class HelloController {

	@RequestMapping("/hello")
	public String sayHello(Model model){
		model.addAttribute("msg", "Hello, how are you?");
		return "hello";
	}
	
}

说明:
1. 类注释@Controller说明这个类是一个Controller,有了这个标记就能被component-scan搜索到。(因为操作三中的配置文件中我们这样写到<context:component-scan base-package="test"/>)
注意:Spring提供了四种类标记@Component,@Controller,@Service和@Repository。他们的关系大概是这样的:后三者是第一个的“子类”。(加引号,是因为我不知道注释有没有子类的概念,不知道这样说是否科学)。虽然所有的类都可以标记成为@Component,但标记成其他三种会更具体,多一些功能(问题:具体有什么区别?)

2. @RequestMapping标记了sayHello方法,这类方法官方学名叫handller。handler的返回类型(这里是String)和参数类型(这里就有Model一个参数)有好多种。总之就是很灵活的,不像struts只能返回String。
问题:handler支持的返回类型和参数类型都有哪些?

3. 返回的"hello"将被看成是一个view名称,被viewResolver处理,根据设定(见操作三)在前面加上/WEB-INF/jsp/,在后面加上.jsp就成了/WEB-INF/jsp/hello.jsp。所以呢我们要创建这个文件。

操作五:创建视图/WEB-INF/jsp/hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
	<h1>${msg }</h1>
</body>
</html>


eclipse把jsp的默认encoding设置iso-8859什么的,特别讨厌。可以这样改成utf-8
Window->Preferences->Web->JSP Files->修改Encoding下拉项

操作六:测试
测试前发现WebRoot下index.jsp还没有呢,先建一个吧。
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!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>Insert title here</title>
</head>
<body>
	<a href="hello">Hello example</a>
</body>
</html>


在浏览器中输入网址http://localhost:8080/Demo/
分享到:
评论

相关推荐

    springmvc +mybatis +maven 项目搭建demo

    以上就是关于"springmvc +mybatis +maven 项目搭建demo"的相关知识点,这个项目模板为初学者提供了学习和实践现代Java Web开发的基础框架,通过理解和修改这个示例,开发者能够更好地掌握这些技术的整合与使用。

    SpringMVC完整搭建项目

    这个"SpringMVC完整搭建项目"对于初学者来说是一个很好的起点,通过下载并运行,你可以直观地了解Spring MVC项目的结构和工作原理,进而深入学习每个组件的细节和扩展性。在实际项目中,你还可以进一步探索Spring ...

    完全基于springmvc搭建的web框架

    springmvc配置简单,功能强大!是进行轻量级web开发的最佳选择,不要迷恋ssh,配置繁琐 ,jar包冲突,就是搭建起来也非常麻烦.spring也有一个web框架,叫做springmvc,搭建环境完全基于spring,直接导入所有jar包.

    SpringMVC项目搭建

    ### SpringMVC项目搭建详解 #### 一、项目概述及环境需求 在开始SpringMVC项目的搭建之前,我们首先需要了解项目的背景以及所需的技术栈。本项目旨在通过一系列的步骤来构建一个基于SpringMVC框架的Web应用。为了...

    SpringMVC项目搭建过程备忘

    在搭建SpringMVC项目时,第一步是设置项目的基本结构。一个标准的SpringMVC项目通常包括以下几个目录: 1. `src/main/java`:存放Java源代码,包括控制器(Controller)、服务(Service)、实体(Entity)等。 2. `...

    基于SpringMVC+Tomcat搭建的WEB工程

    在本文中,我们将深入探讨如何基于SpringMVC和Tomcat搭建一个WEB工程,这是一个常见的Web开发实践,尤其适合初学者入门。我们将从编程环境的设置、SpringMVC框架的介绍、Tomcat服务器的使用,以及项目目录结构等方面...

    maven+springmvc+mybatis web项目搭建

    NULL 博文链接:https://sharis1987.iteye.com/blog/2185373

    Maven搭建SpringMVC+Mybatis项目源码

    本项目以"Maven搭建SpringMVC+Mybatis"为主题,旨在教你如何使用Maven这一强大的项目管理工具,结合SpringMVC作为控制层,以及Mybatis作为持久层,来创建一个高效、结构清晰的Java Web应用。下面将详细介绍这个项目...

    springmvc项目搭建过程

    以上就是Spring MVC项目的基本搭建步骤。理解并熟练掌握这些步骤是开发基于Spring MVC的Java Web应用的基础。在实际项目中,你可能还需要配置数据库连接、安全控制、异常处理等更多内容,进一步完善你的应用。

    创建springMVC步骤1、新建 maven 项目 2、添加pom依赖 3、添加web框架 4、创建项目结构 ……………………

    创建springMVC步骤:1、新建 maven 项目;2、添加pom依赖;3、添加web框架;4、创建项目结构;5、创建并配置springmvc.xml文件;6、配置web.xml文件;7、实现控制器功能;8、设置web依赖;9、项目发布并运行。

    使用spring+springmvc+mybatis搭建项目需要的配置文件,和jar包全部

    总结来说,使用Spring+SpringMVC+MyBatis搭建项目,主要涉及配置文件如`beans.xml`、`servlet-context.xml`和`mybatis-config.xml`,以及一系列的jar包,这些构成了项目的基础架构。通过合理配置和组织,可以实现...

    MAVEN搭建的springmvc项目

    总的来说,这个MAVEN搭建的SpringMVC项目展示了如何利用这两个工具来构建一个现代的、可维护的Web应用。从依赖管理到项目结构,再到具体功能实现,每一部分都体现了良好的开发实践。通过学习和理解这个项目,开发者...

    SpringMVC项目一之项目搭建实现简单登录

    在实际项目中,我们通常会使用IDEA或Eclipse等集成开发环境来快速搭建SpringMVC项目。对于`zwp`这个压缩包文件,如果包含的是本教程的源代码,那么解压后,我们可以看到项目的目录结构、配置文件、Java源代码以及JSP...

    springmvc搭建项目所需全部jar包

    Spring MVC 是一个基于Java的轻量级Web应用框架,它为...通过以上步骤,可以成功搭建一个使用Spring MVC 4.2.1和Log4j2的日志功能的Web项目。注意持续关注Spring和Log4j2的更新,以便利用最新的特性和修复的安全问题。

    SpringMVC入门项目搭建JavaConfig配置方式(零XML)

    以上就是使用JavaConfig配置方式搭建的SpringMVC入门项目的基本流程。通过这种方式,我们可以更直观地理解和管理项目的配置,使得代码更加模块化,也更容易进行单元测试。在SpringMVCDemo项目中,你可以看到具体的...

    spring4+springMVC+Mybatis项目搭建以及测试demo

    在本文中,我们将深入探讨如何搭建一个基于Spring4、SpringMVC和Mybatis的项目,以及如何进行测试。这个项目组合通常被称为“SSM”框架,是Java Web开发中的主流选择,提供了强大的依赖注入、MVC架构和持久层管理...

    springmvc+hibernate完整项目

    这个"springmvc+hibernate完整项目"是一个整合了这两者的技术实践,提供了完整的部署和运行环境,对于初学者或者希望快速搭建后台服务的开发者来说非常实用。 首先,SpringMVC作为Spring框架的一部分,主要处理HTTP...

    IDEA社区版编写的SpringMVC小项目

    "IDEA社区版编写的SpringMVC小项目"涵盖了SpringMVC的基本使用,包括了文件上传和JSON解析两个常见功能。这个项目可以作为学习SpringMVC的起点,帮助理解如何在IDEA中配置和运行SpringMVC项目,以及如何利用其特性...

Global site tag (gtag.js) - Google Analytics