【Java】spring mvc简单项目示例_javaspring,mvc项目案例-程序员宅基地

技术标签: JAVA  spring  java  项目  mvc  示例  

       但凡进行java网站开发的人,都有学过spring mvc的开发。下面用一个获取当前时间和时区的简单示例,展现一下怎么用myeclipse 10,来创建一个spring mvc项目。

       1.打开MyEclipse-->File-->New-->Web Project,在打开的对话框里面输入Project Name为GetTimeDemo,点击Finish,完成项目建立。

        2.导入srping mvc相关包,本地没有的话需要按下面的下载地址进行下载后解压,这里有两种方式导入:第一种在新建项目上右键选择,properties-->Java Build Path-->Libraries-->Add External JARs,引入spring-framework-版本号.RELEASE-dist目录下几个必需的jar包.第二种是直接找到这几个相关包,进行复制粘贴到项目中的WEB-INFO/lib目录下。这里我更习惯于采用第二种,导入完成后项目结构如下图

包下载地址:http://repo.spring.io/libs-release-local/org/springframework/spring/

        可以看到,上面我们导入了7个相关包,像数据库连接、websocket之类的并没有导入进去。同时说明一下,这里commons-logging-1.1.1.jar这个包需要一并导入,因为spring需要它,spring的内部实现中使用了Commons-logging包内的方法,当然你也可以用这个包的其它版本。

       3.打开项目的web.xml文件,进行相关配置,这里的配置是针对于项目网站。将编码添加以下代码,进行URI地址处理:

 

<!--配置拦截器-->
	<servlet>
	<servlet-name>SpringMVC</servlet-name>
	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
	</servlet>
	<!--指定servlet的引擎为SpringMVC-->
	<servlet-mapping>
	<servlet-name>SpringMVC</servlet-name>
	<!-- 监听所有请求 -->
	<url-pattern>/</url-pattern>
	</servlet-mapping>

        4.添加SpringMVC-servlet.xml文件,文件名称去掉“-servlet”后和上面servlet-name的值一致更好,这里是“SpringMVC-servlet”,这样的话不需要在web.xml做另行配置。该文件是针对于SpringMVC的相关配置,文件内容如下:

 

 

<?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: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/context 
       http://www.springframework.org/schema/context/spring-context-3.0.xsd">
    
  <!--扫描基包下的所有注解类-->
  <context:component-scan base-package="com.springmvc"></context:component-scan>
  
  <!--启动注解驱动SpringMVC功能,并配置视图名称-->
  <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
  p:viewClass="org.springframework.web.servlet.view.JstlView"
  p:prefix="WEB-INF/view/"   
  p:suffix=".jsp"/>    
 
</beans>

        5.以上配置完成后,开始进行正式代码处理。添加视图在WebRoot目录下,新建views文件夹,添加test.jsp,编码设置为UTF-8,因为这里要显示时间,我们修改了页面body,代码如下:

 

 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'list.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">

  </head>
  
  <body>
    <h2>用Date获取当前时间:${NowTime1}</h2>  
    <h2>用Calendar获取当前时间:${NowTime2}</h2>  
    <h2>当前时区${Timezone}</h2>  
  </body>
</html>

        上面形如${NowTime1}的表达式,是一种用来显示controller传递过来的NowTime1变量的方式,这样后台控制器获取到的时间等信息,才能显示到视图页面上来。

 

     6.接下来处理控制器controller,在src目录下,新建com.springmvc包,并添加TestController类,主要代码如下

 

@Controller               
public class TestController {
	
	@RequestMapping("/test")
	public String list(Model model) { 
		Date date = new Date();
		String dateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.CHINA).format(date);  
        model.addAttribute("NowTime1", dateTime);  
		Calendar calendar = Calendar.getInstance();
		SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss",Locale.CHINA);
		String dateStr = df.format(calendar.getTime());
		model.addAttribute("NowTime2", dateStr);  
		String zone = System.getProperty("user.timezone");
        model.addAttribute("Timezone", zone);  
		return "test";
	}
}

        这里函数的RequestMapping("/test")申明,指定了请求路径对应关系。参数Model为模型,是数据的桥梁,它将NowTime1等参数及对应值传递到视图页面,以便显示。最后的return“test”,是返回路径,这里只有一个"test"是因为我们在SpringMVC-servlet.xml文件中,配置了p:prefix和p:suffix的值,让我们不必返回页面全路径字符串。当然,如果要采用返回全路径的话,返回值应该是return new ModelAndView("全路径")的形式。
      7.至此,简单的spring mvc项目即创建完毕。运行项目后,会加载web.xml中默认配置的网站首页index.jsp。在地址中添加“/test”后刷新,将看到我们的test页面被加载了出来,如图所示:

 

 

 

 

 

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/u014650759/article/details/78476859

智能推荐

OpenBmc开发15:led管理-程序员宅基地

文章浏览阅读4.6k次,点赞5次,收藏19次。1 led管理实现原理led主要目的是通过led来直观的指示当前的BMC或者服务器的状态。1.1 led管理驱动linux下已经提供了leds-gpio驱动(<linux-src>drivers/leds/leds-gpio.c),用于实现led控制。使用时只需要要在dts中配置好led的控制引脚,即可在在文件系统下创建类似于gpio控制的文件,用户可以直接操作文件即可实现对led的控制。1.2 led管理软件包openbmc下led管理软件包名:phosphor-led-m

spring boot: 热部署spring-boot-devtools-程序员宅基地

文章浏览阅读86次。spring boot: 热部署spring-boot-devtools1引入spring-boot-devtools依赖包&lt;!-- spring boot devtools 热部署 --&gt; &lt;dependency&gt; &lt;groupId&gt;org.springframework.boot&lt;/groupId&gt; &lt;ar..._missing artifact spring-boot-devtools:jar:2.7.8-snapshot

Linux CentOS8 扩展boot分区_linux系统盘没有boot分区-程序员宅基地

文章浏览阅读3.5k次。linux centos7/8扩展boot分区_linux系统盘没有boot分区

SAP使用VL01N创建发货报错“对于指导所选日期的交货没有到期的计划行”的原因_对于直到所选日期的交货没有到期的计划行-程序员宅基地

文章浏览阅读1.7w次,点赞2次,收藏15次。使用事务码VL01N创建 外向发货的时候,遇到问题,“对于指导所选日期的交货没有到期的计划行”翻译成人话就是:你想对这个 销售订单交货 ,但是TMD你压根就没有这么多货,或者,你之前还有一个交货没有交,你现在想跳过去前一个,交后一个?没门。使用MD04看看这个销售订单 卖的 东西(物料)的库存需求吧,孩子你眼瞎?你不看看,你前面一个还没交货,后面一个怎么交?所以先把_对于直到所选日期的交货没有到期的计划行

linux系统进入图文界面,Linux启动界面切换:图形界面-字符界面-程序员宅基地

文章浏览阅读2.2k次。Linux字符界面切换到图形界面由字符界面切换到图形界面可用两种简单方法实现:1、在字符界面输入startx或init 5 。2、通过编辑/etc/inittab文件实现默认进入图形界面。把其中的id:3:initdefault中的3改为5,这样以后系统启动后将直接进入文本模式。以下是配置引导进入图形模式的etc/inittab文件的部分内容:#Default runlevel.The runle..._linux图形化和文字界面

java实现文件下载,兼容IE和火狐的方法-程序员宅基地

文章浏览阅读413次。String path = url; String name = resources.getResourceName(); File file = new File("D:\\"+path); String agent = request.getHeader("User-Agent"); boolean isMSIE = (agent != null && agen..._java 兼容模式下载

随便推点

Matlab GUI编程,如何在一个callback回调函数中调用另一个回调函数_matlab回调函数中调用其他函数-程序员宅基地

文章浏览阅读1.4w次,点赞36次,收藏93次。一、如何在一个callback回调函数中调用另一个回调函数  网上找了好多帖子,都是在答非所问,我最终失去了耐心,自己去写个小demo碰碰运气吧,然后非常幸运,我解决了,哈哈,看下面的小案例。图形界面非常简单,如下图所示:系统生成了一堆代码,里面也包含回调,代码如下:function varargout = test(varargin)% TEST MATLAB code for te..._matlab回调函数中调用其他函数

大整数的输入输出-Longlong_cout long long-程序员宅基地

文章浏览阅读1k次。大整数的输入输出Description输入两个 long long 范围内的整数,输出他们的和。Input两个 long long 范围内的整数。Output输出的两个大整数的和,保证结果在 long long 范围内。SampleInput22222222223333333333Output5555555555#include <iostream>#include <bits/stdc++.h>using namespace std;int mai_cout long long

《C程序员从校园到职场》第4章 变量和函数-程序员宅基地

文章浏览阅读70次。第4章 变量和函数 路人甲到电信营业厅去交电话费,给营业员说要充50块钱,那个营业员问了一句“How much?”路人甲心想现在社会真的与以往不同了,连一般的营业员都开始流行讲英语了,于是便以不是很流利的口语说了一句“Fifty YUAN”。那个营业员一头雾水地看着他,说道“电话号码多少?”路人甲这才恍然大悟,原来是问我电话号码多少,而非多少钱。 也许这个笑话本身并不好笑,但却说明了一个道理:...

FREERTOS学习笔记,任务通知_以下程序,ulvalue中的值是()ulong auldata[10] = {10, 9, 8, 7-程序员宅基地

文章浏览阅读255次。简介在之前的应用中我们通过一系列独立的任务来使用FREERTOS。但有时我们也需要任务之间相互交流。通过中间项目交流之前章节我们都是通过中间相来进行交流。例如信号量,队列等,中断或任务先将信号量或数据放入队列,然后等待其他任务的使用。任务通知(直接交流)任务通知,使得任务间可以直接交流,或使任务与中断同步。通过任务通知,中断或任务可直接将事件传递给需要的任务。任务通知功能是可选功能,若..._以下程序,ulvalue中的值是()ulong auldata[10] = {10, 9, 8, 7, 6, 5, 4, 3,

getshell_getsheell-程序员宅基地

文章浏览阅读735次。上传题:一共三个过滤请求头部的 Content-Type文件后缀请求数据的Content-Type这里是黑名单过滤来判断文件后缀,依次尝试php4,phtml,phtm,phps,php5(包括一些字母改变大小写)最终发现,php5(PHP5)可以绕过接下来,请求数据的Content-Type字段改为 image/jpeg但是一开始没注意到,上面还有一个请求头Content-..._getsheell

PL/SQL Developer查询窗口显示所有行的设置方法_plsql多个sql窗口并排显示-程序员宅基地

文章浏览阅读7.1k次。首先,点击【配置】-【首选项】然后,点击【首选项】窗口中左边栏【SQL窗口】,每页记录数选择【所有记录】就这样,查询数据较多时,不必再点击下一页按钮了,方便许多。。。 ..._plsql多个sql窗口并排显示