• SpringMVC 入门demo


    (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>
  • 相关阅读:
    关于架构,关于系统,关于合作,我也得问问我们自己
    vs2013 无法打开 源 文件 "SDKDDKVer.h"
    视频基础知识汇总
    python gRPC接口调用
    python多线程同时执行2个函数任务之threading
    git基本操作_快速查询
    pycharm激活码 我是搬运工
    CodeReview的一些原则
    python多线程执行同一个函数任务之threading、ThreadPoolExecutor.map
    python程序超时处理 timeout_decorator
  • 原文地址:https://www.cnblogs.com/chy18883701161/p/12240795.html
Copyright © 2020-2023  润新知