(1)新建Spring项目


(2)添加所需要的jar包

spring的5+2:

  • spring-core.jar
  • spring.beans.jar
  • spring-context.jar
  • spring-expression.jar
  • spring-aop.jar
  • spring-web.jar
  • spring-webmvc.jar

(这2个jar包是spring mvc的)

web应用的2个:

  • servlet.jar
  • jsp.jar

这2个包的名字五花八门,总之就是servlet一个、jsp一个。

可以到tomcat的lib下复制,也可以下载Java EE的压缩包。

可以在Project  Structure中添加包,这种方式在部署时容易出现lib复制不全的问题,

解决方式参考:https://www.cnblogs.com/chy18883701161/p/12240317.html

也可以在WEB-INF下新建文件夹lib,把jar包复制到此文件夹,然后对lib点击右键->Add as Library。

web应用的lib要建在WEB-INF下,只有建在WEB-INF下,部署时才会复制。


(3)新建包com.chy,model,包下新建实体类User

package com.chy.model;

public class User {
private String username;
private String password; public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
}
}

(4)新建包com.chy.controller,包下新建类UserController,只需实现Controller接口

package com.chy.controller;

import com.chy.model.User;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller; public class UserController implements Controller {
@Override
public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
//视图可以在构造器中指定,也可以先使用空参构造器,在调用setter方法设置
ModelAndView mav = new ModelAndView("/WEB-INF/jsp/user_info.jsp"); User user = new User();
user.setUsername("chy");
user.setPassword("abcd"); //向视图传递数据
mav.addObject("user", user); return mav;
}
}

注意实现的是  org.springframework.web.servlet.mvc.Controller ,不要导错了。


(5)WEB-INF下新建文件夹jsp,jsp文件夹下新建文件user_info.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
用户名:${user.username} <br />
密码:${user.password}
</body>
</html>

使用controller传过来的数据,实质是通过model的getter方法获取属性值。


(6)在src下新建springmvc的配置文件springmvc-config.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <!-- 配置处理器映射-->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" /> <!-- 配置处理器的适配器-->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" /> <!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" /> <!--配置要使用的控制器,name的值需要加/ -->
<bean name="/userController" class="com.chy.controller.UserController" /> </beans>

(7)在web.xml中用DispatcherServlet拦截所有HTTP请求

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"> <!--配置DispatcherServlet-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!--指定配置文件的位置-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc-config.xml</param-value>
</init-param>
<!-- 1表示web容器(比如tomcat)启动时就初始化此servlet -->
<load-on-startup>1</load-on-startup>
</servlet> <!-- 拦截所有HTTP请求,注意是/,不是/* -->
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping> </web-app>

如果未指定springmvc配置文件的路径,默认会去WEB-INF下找名为DispatcherServlet-servlet.xml的文件,

所以也可以在WEB-INF下新建DispatcherServlet-servlet.xml,在里面写springmvc的配置。

如果未指定Servlet的加载时机,会在需要时才加载(初始化)此Servlet。


测试

部署项目,访问controller:

http://localhost:8080/springmvc_war_exploded/userController

显示:

用户名:chy
密码:abcd

视图名的拼接

上面的demo中,我们在controller中写的是完整的视图名:

ModelAndView mav = new ModelAndView("/WEB-INF/jsp/user_info.jsp");

每次设置视图名时都写一长串,很麻烦,可以拼接视图名:

ModelAndView mav = new ModelAndView("user_info");
    <!--配置视图解析器-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!--前缀-->
<property name="prefix" value="/WEB-INF/jsp/" />
<!--后缀-->
<property name="suffix" value=".jsp" />
</bean>

SpringMVC 入门demo的更多相关文章

  1. 【SSH系列】深入浅出SpringMvc+入门Demo

    Spring MVC框架是有一个MVC框架,通过实现Model-View-Controller模式来很好地将数据.业务与展现进行分离.从这样一个角度来说,Spring MVC和Struts.Strut ...

  2. springmvc入门demo

    目录结构: package com.wyl; import org.springframework.stereotype.Controller; import org.springframework. ...

  3. Maven+SpringMVC+Dubbo 简单的入门demo配置

    转载自:https://cloud.tencent.com/developer/article/1010636 之前一直听说dubbo,是一个很厉害的分布式服务框架,而且巴巴将其开源,这对于咱们广大程 ...

  4. 【Spring】SpringMVC入门示例讲解

    目录结构: // contents structure [-] SpringMVC是什么 Spring MVC的设计原理 SpringMVC入门示例 1,复制Jar包 2,Web.xml文件 3,My ...

  5. Spring+SpringMVC+MyBatis深入学习及搭建(十二)——SpringMVC入门程序(一)

    转载请注明出处:http://www.cnblogs.com/Joanna-Yan/p/6999743.html 前面讲到:Spring+SpringMVC+MyBatis深入学习及搭建(十一)——S ...

  6. SpringMVC入门第二天

    SpringMVC第二天 1.   回顾 1.Springmvc介绍? Springmvc是Spring公司 2.Springmvc入门程序 第一步:Web工程 第二步:导Jar包 第三步:web.x ...

  7. 【SSH系列】初识spring+入门demo

    学习过了hibernate,也就是冬天,经过一个冬天的冬眠,当春风吹绿大地,万物复苏,我们迎来了spring,在前面的一系列博文中,小编介绍hibernate的相关知识,接下来的博文中,小编将继续介绍 ...

  8. 3.2.1 SpringMVC入门

    一. SpringMVC入门 1. MVC介绍 MVC全名 是Model View Controller, 是模型(model) - 视图(view) - 控制器(controller) 的缩写, 它 ...

  9. 基于springboot构建dubbo的入门demo

    之前记录了构建dubbo入门demo所需的环境以及基于普通maven项目构建dubbo的入门案例,今天记录在这些的基础上基于springboot来构建dubbo的入门demo:众所周知,springb ...

随机推荐

  1. extern "C" 与函数重载

    前言 如果向要在一个文件中使用另一个文件中的变量,不能在头文件中定义全局变量,因为被多个文件包含后会导致编译出错,并且静态的static变量,只能在本文件内使用,这时候就可以使用extern关键字. ...

  2. python开发基础04-列表、元组、字典操作练习

    练习1: # l1 = [11,22,33]# l2 = [22,33,44]# a. 获取内容相同的元素列表# b. 获取 l1 中有, l2 中没有的元素列表# c. 获取 l2 中有, l1 中 ...

  3. c++中const变量定义与头文件包含的有关问题

    在使用C++进行程序开发的时候,有个常识我们很熟悉,就是把类的定义写在.h文件中,把类的具体实现写在.cpp文件中.这毫无疑问是对的.但我们很少去思考为什么要这样做,本文结合自己的学习体会,对头文件及 ...

  4. Maven快速创建SpringMVC web(1)

     Maven快速创建SpringMVC web工程详解  转自:http://blog.csdn.net/cndmss/article/details/52184836

  5. Linux 下使用 ffmpeg 大批量合并 ts 文件, mp4切割文件为m3u8

    见范例 ffmpeg -i "concat:file001.ts|file002.ts|file003.ts|file004.ts......n.ts" -acodec copy ...

  6. 论STA | 工艺、工具、分析的本与末

    人类从漫长的蒙昧中觉醒之后,不再依靠着奇装异服的巫师通灵来指导生活,巫师进化成了科学家,他们试图对周遭的一切进行概括.分类.抽象,于是有了化学.物理.数学等基科.比如一粒沙,它的化学组成是什么,物理特 ...

  7. WPscan扫描工具安装使用

    WPScan是Kali Linux默认自带的一款漏洞扫描工具,它采用Ruby编写,能够扫描WordPress网站中的多种安全漏洞,其中包括WordPress本身的漏洞.插件漏洞和主题漏洞.最新版本WP ...

  8. 深入delphi编程理解之消息(四)使用TWMSysCommand结构体的WM_SysCommand消息应用

    通过以下实例拦截窗体WM_SysCommand消息,我们可以获取到很多有趣的数据. 一.程序界面 二.程序代码 unit Unit1; interface uses Windows, Messages ...

  9. 深入delphi编程理解之消息(三)发送消息函数的一般应用实例

    通过对消息函数(SendMessage.PostMessage.Perform)的一般应用,来说明sendmessage.postmessage函数和perform 方法调用方式和结果的区别. 一.程 ...

  10. Speech Bandwidth Extension With WaveNet

    利用WAVENET扩展语音带宽 作者:Archit Gupta, Brendan Shillingford, Yannis Assael, Thomas C. Walters 博客地址:https:/ ...