java_springMVC_介绍及开发流程

一、历史

    2008年之前使用的只是servlet开发,它的最大缺点是,将视图层、业务逻辑层、数据交互层写到了一起,无法区分开来。可维护性差。

后来演变出了jsp,它很好的解决了视图层与业务层的分离。JavaBean充当我们的数据交互层,这也是最早期MVC模型的原型。JSP(视图层)+Servlet(控制层)+JavaBean(数据层)。

再后来演变出了webwork,它就是strust1的前身。后来被融入strust了。它是单例多线程的,因此一个类中无法处理多个业务逻辑。和servlet一样,一个action只能处理一个业务逻辑。

再后来演变出了strust2,可以进行多业务的处理了,即一个action中可以写多个方法。从2008/09年到2012年间为企业的主流框架,即SSH

2013年很多企业都开始使用springMVC了。

二、SpringMVC流程

三、开发springMVC工程的流程

1.创建工程

创建一个web项目,名称为:firstSpringMVC

最后一步记得钩选自动生成web.xml选项。

新建后结构如下:

2.导入包

复制jar包到lib目录中:

  commons-beanutils-1.8.0.jar

commons-fileupload-1.2.1.jar

commons-io-2.0.1.jar

commons-lang3-3.1.jar

commons-logging-1.1.3.jar

commons-pool-1.2.jar

spring-aop-4.1.5.RELEASE.jar

spring-aspects-4.1.5.RELEASE.jar

spring-beans-4.1.5.RELEASE.jar

spring-context-4.1.5.RELEASE.jar

spring-context-support-4.1.5.RELEASE.jar

spring-core-4.1.5.RELEASE.jar

spring-expression-4.1.5.RELEASE.jar

spring-web-4.1.5.RELEASE.jar

spring-webmvc-4.1.5.RELEASE.jar

spring-webmvc-portlet-4.1.5.RELEASE.jar

另外还需要复制log4j.properties文件,用于输出日志。:


3.配置web.xml

web.xml中增加如下内容:

<!-- 配置SpringMVC -->

<servlet>

<servlet-name>springMVCName</servlet-name>

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

<init-param>

<param-name>contextConfigLocation</param-name>

<param-value>/WEB-INF/springMVC.xml</param-value> 

</init-param>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>springMVCName</servlet-name>

<url-pattern>/</url-pattern>

</servlet-mapping> 

在这里,<url-pattern>定义了整个请求-响应的映射载体:URL;而<servlet-name>则将<servlet>节点和<servlet-mapping>节点联系在一起形成请求-响应的映射关系;<servlet-class>则定义了具体进行响应的Servlet实现类。

这段入口程序的配置中隐藏了SpringMVC的两大要素(核心分发器Dispatcher和核心配置文件[servlet-name]-servlet.xml)之间的关系表述:

    以一个Servlet作为入口程序是绝大多数MVC框架都遵循的基本设计方案。这里的DispatcherServlet被我们称之为核心分发器,是SpringMVC最重要的类之一。

Spring提供了一个初始化的配置选项,通过指定contextConfigLocation选项来自定义SpringMVC核心配置文件的位置。也可以去掉此段代码,SpringMVC在这里采用了一个“命名约定”的方法进行关系映射,这种方法很廉价也很管用。我们就必须在/WEB-INF/目录下,放一个名为“名称-servlet.xml”的Spring配置文件作为SpringMVC的核心配置用以指定SpringMVC的基本组件声明定义。 如上面的servlet名称为:<servlet-name>springMVCName</servlet-name>

SpringMVCName,因默认需要创建一个名为springMVCName-servlet.xml配置文件。但是因为<init-param>中配置名称springMVC.xml因此使用此名称的配置文件。

4.配置”名称-servlet.xml”

正如上面所说,需要在/WEB-INF/目录下新建一个名为:firstSpringMVC-servlet.xml的文件。但是,因为web.xml中的init-param中定义了配置文件的路径和名称,因此需要在/WEB-INF目录中创建名为springMVC.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:p="http://www.springframework.org/schema/p" 

xmlns:context="http://www.springframework.org/schema/context" 

xmlns:mvc="http://www.springframework.org/schema/mvc" 

xmlns:aop="http://www.springframework.org/schema/aop"

xmlns:tx="http://www.springframework.org/schema/tx"

xsi:schemaLocation="        

        http://www.springframework.org/schema/beans

        http://www.springframework.org/schema/beans/spring-beans.xsd

        http://www.springframework.org/schema/tx

        http://www.springframework.org/schema/tx/spring-tx.xsd

        http://www.springframework.org/schema/aop

        http://www.springframework.org/schema/aop/spring-aop.xsd

        http://www.springframework.org/schema/context

        http://www.springframework.org/schema/context/spring-context.xsd

        http://www.springframework.org/schema/mvc

        http://www.springframework.org/schema/mvc/spring-mvc.xsd

        ">

</beans>

在此配置文件中添加使用注解的bean。因此先创建一个controller类(先跳到下一节创建controller类)。

然后在此配置文件中增加如下配置:

<!-- 扫描类包以应用注解定义的Bean -->

<context:component-scan base-package="com.gary.controller" />

注:不要在这里扫daoservice中的包。因为controller中会用到daoservice,当扫controller包时就会加载其实例,此时daoservice还没有注入,直接使用将是一个空壳。

因此daoservice需要放到上下文中,先于此处的扫包被加载。

5.创建controller

创建一个包:com.gary.controller

添加一个类:UserController

package com.gary.controller;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;

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

import org.springframework.web.bind.annotation.RequestMethod;

@Controller

@RequestMapping("/user")

public class UserController {

@RequestMapping(method = RequestMethod.GET, value = "/dologin")

public String dologin(

HttpServletRequest request, HttpServletResponse response,

String username, String password){

System.out.println("dologin : " + username + " - " + password);

return "";

}

}

 

6.测试

启动服务,在页面中输入:

http://localhost:8080/firstSpringMVC/user/dologin?username='abc'&password='123'

后台打印:

 

说明上面的配置正确。

 

7.返回页面

返回页面需要配置一个视图解析器。

在上面的springMVC.xml配置文件中,扫描包后面添加如下配置:

<!-- 配置视图解析器 -->

<bean name="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<!-- 指定页面存放的路径 -->

<property name="prefix" value="/WEB-INF/jsp/"></property>

<!-- 指定后缀 -->

<property name="suffix" value=".jsp"></property>

</bean>

将上面的controller类返回值修改一下:

@RequestMapping(method = RequestMethod.GET, value = "/dologin")

public String dologin(

HttpServletRequest request, HttpServletResponse response,

String username, String password){

System.out.println("dologin : " + username + " - " + password);

return "login/welcome";

}

返回的字串需要和视图解析器中的配置结合起来,将路径放到前面,将后缀放到后面,即:

/WEB-INF/jsp/login/welcome.jsp

因此,需要在WEB-INF目录下创建jsp/login目录,并且在login目录下创建一个welcome.jsp文件。

同时,为了更具有说明性,我们再增加uploaddownload两个目录,显得更像一个真实的工程,结构如下:

 

welcome.jsp中添加一个标签:

 

再次启动服务,访问user/dologin,返回了页面,同时后台也打印了内容。 

8.访问首页

访问首页的意思是,当在页面中输入http://localhost:8080/firstSpringMVC

时,应该显示一个首页。

有两种方式:

一、在web.xml中配置:

  <display-name>firstSpringMVC</display-name>

  <welcome-file-list>

    <welcome-file>home.jsp</welcome-file>

  </welcome-file-list>

此时只需要在根目录下(WEB-INF的平级目录)放一个home.jsp,程序就会自动引用显示。

 

注意,这里是直接显示home.jsp,因此如果页面中需要后台的参数那是拿不到的,所以这个页面一定要是静态的,一般用home.htmlindex.html会更便于理解。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值