码迷,mamicode.com
首页 > 编程语言 > 详细

springmvc学习(一)helloworld实例

时间:2016-08-02 01:05:53      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:

今天介绍的是springmvc的学习,越来越多的企业开始选择springmvc+mybatis来构建系统架构,在电商热门的今天,springmvc+mybatis已成为电商项目架构的很好搭配。Spring mvc和struts2都属于表现层的框架,spring mvc是Spring框架的一部分,较于struts2框架使用的更加广泛;mybatis和hibernate都属于持久层的框架,mybatis是对jdbc操作数据库的的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。

首先建议eclipse安装一个springIDE,这个安装方式百度即可,安装的话就会有提示并且新建的时候能新建出配置文件

技术分享

安装好以后,我们新建一个动态web项目,之后按照如下步骤来写

①配置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" 
    id="WebApp_ID" 
    version="3.0">
    
    <!-- 配置DispatcherServlet -->
    <servlet>
        <servlet-name>springDispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--配置DispatcherServlet的一个初始化参数,配置Springmvc的配置文件的位置和名称  -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
            </init-param>
            <!-- 1代表项目加载的时候被创建,不是被访问的时候才被创建 -->
            <load-on-startup>1</load-on-startup>
        </servlet>
	<servlet-mapping>
	     <servlet-name>springDispatcherServlet</servlet-name>
	    <!-- 应答请求的地址,/代表可以应答所有请求 -->
	     <url-pattern>/</url-pattern>
	    </servlet-mapping>
</web-app>

 其中,servlet-name可以随便写,我们命名是springDispatcherServlet,意思是spring的请求处理器,这个概念很重要。
这后的这些内容可看注释,学过servlet的人看明白应该没问题。

既然配置了请求处理器,那么就得有个请求的发起者,我在本例子中用的是index.jsp中的<a href="helloworld">hello world</a>把href的helloworld当成了一个请求的URL

②index.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<a href="helloworld">hello world</a>

</body>
</html>

 

当用户点击了这个超链接之后,springmvc先是通过web.xml中的springDispatcherServlet这个请求处理器把请求转到stringmvc.xml进行处理,

③stringmvc.xml,在src下面新建

<?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/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd">
<!-- 配置自动扫描的包 -->
<context:component-scan base-package="com.bai.handler"></context:component-scan>
<!--配置视图解析器,就是如何把handler方法的返回值解析为实际的物理视图,就是return"success"怎么展现  -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/views/"></property>
    <property name="suffix" value=".jsp"></property>
</bean>

</beans>

 可以看到上面先配置的是自动扫描的包,他需要扫描到具体类的具体方法,我们写了一个处理器的类HelloWorld,在包com.bai.handler下面

④处理器类

package com.bai.handler;

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


@Controller
public class HelloWorld {
	/**
	 * @author peng
	 *1.使用@RequestMapping配置映射请求的url,这个url也就是index.jsp里面超链接的href的地址
	 *2。返回值会通过视图解析器解析为实际的物理视图,对于InternalResourceViewResolver视图解析器,会做如下的解析
	 *通过prefix+returnvalue+suffix这样的方式得到实际的物理视图,然后进行转发操作
	 *就是将请求转发到了
	 * /WEB-INF/views/success.jsp这个页面
	 */
	@RequestMapping("/helloworld")
	public String hello(){
		System.out.println("hello world");
		return "success";
	}

}

 在这个类文件中,先写上@Controller 这个处理器的注释,然后是请求映射的地址@RequestMapping("/helloworld"),这个是下面的方法处理请求该地址的情况,我点击了超链接后,请求发送给/helloworld,那么走到stringmvc.xml中看到下面的hello()方法映射的地址就是该请求地址,那么这个方法就去处理这个请求,这个方法返回了字符串success
,返回了字符串还不行,需要映射到物理视图的层面,怎么映射呢?上面的stringmvc.xml配置文件中配置了视图解析器InternalResourceViewResolver

解析的方式就是      通过prefix+returnvalue+suffix这样的方式得到实际的物理视图,然后进行转发操作

此例子中返回的结果就是/WEB-INF/views/success.jsp,然后我只需要在新建views文件夹,新建success.jsp即可证明转发到了这个页面了

⑤success.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    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=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
success page
</body>
</html>

下面就看一下浏览器中的结果

技术分享

点击后的结果

技术分享

地址栏未变,是服务器端的转发,成功。

项目的结构

技术分享

项目需要的jar包

技术分享

这是基于spring4.0版本的

补充一下:

还有一种web.xml配置文件中的写法

技术分享

 

具体内容请看上面的注释,结构稍有改变

大致流程

技术分享

有不对的地方,欢迎批评指正。

 

springmvc学习(一)helloworld实例

标签:

原文地址:http://www.cnblogs.com/baipeng/p/5727572.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!