前一节Spring MVC3入门之1 Hello World(XML based) ,本章同样基于其环境版本。
对比性的截图贴代码,比较一下纯XML based和Annotationed两个版本的优点和缺点。
1.New Maven Project
2.New Maven Project选择maven-archetype-webapp
3.接下来Group Id , Artifact Id ,Version
4.点Finish。接下来,maven引入以下dependencies。
spring-webmvc选择3.0.5.RELEASE版本
taglibs standard选择1.1.2版本
这里会要用到cglib,选择2.2.2版本
单元测试junit这次不会涉及到,去掉了。
至于maven如何引入,后面在maven系列中会详细介绍。
好了,最终pom.xml长这样。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.nanigac.springmvc</groupId>
<artifactId>HelloWorldAnnotationed</artifactId>
<packaging>war</packaging>
<version>1.0.0-SNAPSHOT</version>
<name>HelloWorldAnnotationed Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring-webmvc.version}</version>
</dependency>
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>${taglibs.version}</version>
</dependency>
<dependency>
<groupId>cglib</groupId>
<artifactId>cglib</artifactId>
<version>${cglib.version}</version>
</dependency>
</dependencies>
<build>
<finalName>HelloWorldAnnotationed</finalName>
</build>
<properties>
<spring-webmvc.version>3.0.5.RELEASE</spring-webmvc.version>
<taglibs.version>1.1.2</taglibs.version>
<cglib.version>2.2.2</cglib.version>
</properties>
</project>
5.接下来,web.xml长这样。嗯,这里也是2.5版本的。
<?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_2_5.xsd"
id="WebApp_ID" version="2.5">
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextClass</param-name>
<param-value>
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</init-param>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>com.nanigac.springmvc.context.HelloWorldContext</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>*.htm</url-pattern>
<url-pattern>/helloworld.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>helloworld.htm</welcome-file>
</welcome-file-list>
</web-app>
大家注意XML based和Annotationed版本的<servlet></servlet>处的区别。
6.XML based版本,此处是mvc-dispatcher-servlet.xml,这里换成了com.nanigac.springmvc.context.HelloWorldContext.java,代码是这样。
package com.nanigac.springmvc.context;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
import com.nanigac.springmvc.controller.HelloWorldController;
@Configuration
public class HelloWorldContext {
@Bean
public DefaultAnnotationHandlerMapping defaultAnnotationHandlerMapping() {
return new DefaultAnnotationHandlerMapping();
}
@Bean
public InternalResourceViewResolver internalResourceViewResolver() {
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
viewResolver.setPrefix("/WEB-INF/pages/");
viewResolver.setSuffix(".jsp");
return viewResolver;
}
@Bean
public HelloWorldController HelloWorldController() {
return new HelloWorldController();
}
}
7.接下来,在src\main\下新建java source folder,接着在src\main\java\下创建Package:com.nanigac.springmvc.controller,并新建HelloWorldController,长这样。
package com.nanigac.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
@Controller
@RequestMapping("/helloworld")
public class HelloWorldController {
@RequestMapping(method=RequestMethod.GET)
public ModelAndView helloWorld() {
ModelAndView model = new ModelAndView("HelloWorld");
model.addObject("message", "Hello World!");
return model;
}
}
8.接下来,移动index.asp到/WEB-INF/pages/下并rename为HelloWorld.jsp,编辑成这样。
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<body>
<h1>${message}</h1>
</body>
</html>
9.最终Project Explorer里面项目结构长这样。
10.好吧,大功告成。选择Run AS maven clean,Run AS maven package,成功以后可以在target目录下找到HelloWorldAnnotationed.war。拷贝到%TOMCAT_HOME%/webapps/下,运行tomcat,http://localhost/HelloWorldAnnotationed/ RP没问题的话,可以看到运行成功页面写着一个大大的Hello World!。祝lucky。
- 大小: 22.1 KB
- 大小: 28 KB
- 大小: 21.8 KB
- 大小: 12.5 KB
分享到:
相关推荐
人工智能导论大学生期末复习测试题
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
wx_camera_1717740438095.jpg
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
计算机二级考试是中国计算机技术职业资格(水平)考试中的一个级别,主要面向具备一定计算机应用能力的人员。考试内容通常包括理论知识和实践技能两个部分,旨在评估考生在计算机操作、编程、数据库管理等方面的综合能力。以下是对计算机二级考试的简介: - **考试目的**: 验证考生是否具备计算机应用的基本技能和一定的专业水平。 - **考试科目**: 考试科目多样,可能包括但不限于C语言程序设计、Java语言程序设计、数据库技术、办公软件应用、计算机网络基础等。 - **考试形式**: 包括笔试(理论知识测试)和上机考试(实践技能测试)。 - **考试题型**: 题型可能包括选择题、填空题、简答题、应用题和操作题等。 - **适用人群**: 适用于希望提升计算机应用能力的学生、职场人士以及对计算机技术感兴趣的自学者。 - **学习价值**: 通过考试可以系统学习计算机相关知识,提高个人计算机操作和编程能力。 - **考试准备**: 考生需要根据考试大纲进行复习,掌握必要的理论知识和实践技能。 - **考试认证**: 考试合格者将获得由考试机构颁发的计算机二级证书,证明其计算机应用能
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
Ruby语言案例简介: 本案例提供了一个使用Ruby语言编写的简单程序,目的是展示如何在控制台输出"Hello, World!"。这个程序是一个入门级的示例,适合初学者用来了解Ruby的基本语法和运行机制。 - **语言特性**: Ruby是一种简单而强大的编程语言,以其优雅的语法和灵活的编程范式而著称。 - **程序结构**: 程序包括了Ruby的基本组成部分,如`puts`函数,用于在控制台输出文本。 - **输出**: 使用`puts`函数输出"Hello, World!"到控制台,这是Ruby中的标准输出方法。 - **编译运行**: Ruby是一种解释型语言,通常不需要编译,可以直接运行。 - **适用人群**: 适合对Ruby感兴趣的初学者,以及希望快速了解Ruby编程基础的开发者。 - **学习价值**: 通过这个案例,学习者可以学习到Ruby的基本语法、程序结构、控制台输出,以及如何运行一个简单的Ruby程序。 这个案例是进入Ruby编程世界的第一步,为进一步探索Ruby的高级特性如面向对象编程、模块化、元编程等打下基础。随着学习的深入,开发者将能够利用
摘 要 现代经济快节奏发展以及不断完善升级的信息化技术,让传统数据信息的管理升级为软件存储,归纳,集中处理数据信息的管理方式。本营业厅宽带系统就是在这样的大环境下诞生,其可以帮助管理者在短时间内处理完毕庞大的数据信息,使用这种软件工具可以帮助管理人员提高事务处理效率,达到事半功倍的效果。此营业厅宽带系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了健身房基础数据的管理,员工的管理,公告信息的发布等功能。营业厅宽带系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 关键词:营业厅宽带系统;SSM框架;Mysql;自动化
03墙面抹灰工程
E350系列电批与PLC接线示意图
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
数据存储功能csv,爬取懂车帝的基本信息,echart左上玫瑰饼图前端渲染,后端数据传递,js动画效果,生成汽车数据分析大屏。
随着虚拟现实和游戏事业的快速发展,unity3D作为一款能够快速开发和应用的3D虚拟现实开发软在市场上正在逐步升温。文本的主要内容是介绍用unity3D软件做一款简单的射击类游戏。本文从前期的相关技术介绍、开发软件系统以及环境的介绍、项目的功能需求分析和详细设计、系统的运行、成品的打包等方面介绍了系统的开发过程。本设计主要为坦克类的射击游戏,设计平台为unity3D 3.5.5版本,系统中还用到了3dsMAX软件,photoshop软件中的一些相关技术,设计语言使用的是C#语言,系统主要实现一些模型移动、开火等基本的相关操作并在此基础上能够充分发挥开发者的能力进行更多复杂的逻辑设计。
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。
分布式锁与信号量 关于分布式锁和信号量的简单教程: 在实际应用中,分布式锁和信号量的实现和使用会更加复杂和多样化,需要根据具体需求进行优化和调整
项目运行视频
Python库是一组预先编写的代码模块,旨在帮助开发者实现特定的编程任务,无需从零开始编写代码。这些库可以包括各种功能,如数学运算、文件操作、数据分析和网络编程等。Python社区提供了大量的第三方库,如NumPy、Pandas和Requests,极大地丰富了Python的应用领域,从数据科学到Web开发。Python库的丰富性是Python成为最受欢迎的编程语言之一的关键原因之一。这些库不仅为初学者提供了快速入门的途径,而且为经验丰富的开发者提供了强大的工具,以高效率、高质量地完成复杂任务。例如,Matplotlib和Seaborn库在数据可视化领域内非常受欢迎,它们提供了广泛的工具和技术,可以创建高度定制化的图表和图形,帮助数据科学家和分析师在数据探索和结果展示中更有效地传达信息。