spring学习——springmvc快速体验

打开idea点new project(或者file——》new ——》project)


1.png

第二次,有17个JARS,第一次只有2个JARS(不知道为什么)

2.png

异常
3.png

点击set up然后手动代理(第三个),然后try again不行就多试几次,也可以换个网试试
Spring MVC 快速体验的步骤:
-1.
链接:https://pan.baidu.com/s/1LUf2oRL1WW5stNSRvdv-IA
提取码:5v2p
复制这段内容后打开百度网盘手机App,操作更方便哦
在WEB-INF文件夹下创建lib文件夹,并引入以上的jar包
本地jar包路径:
jar包

0.web工程目录结构
参考:
这个是eclipse的:https://blog.csdn.net/indieinside/article/details/7740085
(web工程-目录结构)
这个是idea的:
https://www.cnblogs.com/schiller-hu/p/9975030.html
(IntelliJ IDEA 中 Web项目 目录结构)
https://blog.csdn.net/dreame_life/article/details/88815079

(IDEA中的Web目录结构)

web.xml、文件的位置如下图,

1.配置web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app id = "WebApp_ID"
        version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <display-name>Springmvc</display-name>

    <!-- 使用ContextLoaderListener配置时,需要告诉它Spring配置文件的位置-->
    <context-param>

        <param-name>contextConfigLocation</param-name>
        <!--关键位置1:contextConfigLocation:Spring的核心就是配置文件,可以说配置文件是Spring中必不可少的东西,
        而这个参数就是使Web和Spring的配置文件相结合的一个关键配置。-->

        <param-value>classpath:applicationContext.xml</param-value>
    </context-param>

    <!-- SpringMVC的前端控制器 -->
    <!-- 当 DispatcherServlet 载入后,它将从一个XML文件中载入Spring的应用上下文,该XML文件的名字取决于<servlet-name>-->
    <!-- 这里DispatcherServlet 将试图从一个叫做Spring-servlet.xml的文件中载入应用上下文,其默认位于WEB-INF目录下-->
    <servlet>
        <servlet-name>Springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <!--关键位置2:DispatcherServlet:包含了SpringMVC的请求逻辑,Spring使用此类拦截Web请求并进行相应的逻辑处理。-->
        <load-on-startup>1</load-on-startup>

        <!--<param-value>classpath:applicationContext.xml</param-value>-->
        <!--applicationContext.xml在src路径下-->

        <param-value>WEB-INF/applicationContext*.xml</param-value>
        <!--applicationContext.xml在WEB-INF路径下-->

    </servlet>

    <servlet-mapping>
        <servlet-name>Springmvc</servlet-name>
        <url-pattern>*.htm</url-pattern>
    </servlet-mapping>

    <!--配置上下文载入器-->
    <!-- 上下文载入器载入除DispatcherServlet载入的配置文件之外的其它上下文配置文件 -->
    <!-- 最常用的上下文载入器是一个Servlet监听器,其名称为ContextLoaderListener-->
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
</web-app>

<!--参考:
https://blog.csdn.net/kalision/article/details/7633002
(applicationContext.xml 配置文件的一些认识)

web.xml中classpath:和classpath*:, 有什么区别?
classpath:只会到你的class路径中查找找文件;
classpath*:不仅包含class路径,还包括jar文件中(class路径)进行查找.

applicationContext.xml的存放位置
1:src下面
需要在web.xml中定义如下:
<context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext.xml</param-value>
</context-param>

2:WEB-INF下面
需要在web.xml中定义如下:
<context-param>
 <param-name>contextConfigLocation</param-name>
 <param-value>WEB-INF/applicationContext*.xml</param-value>
</context-param>

notes:contextConfigLocation 参数定义了要装入的 Spring 配置文件
-->

2.创建Spring配置文件applicationContext.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:tx = "http://www.springframework.org/schema/tx"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
        http://www.Springframework.org/schema/tx
        http://www.springframework.org/schema/tx/spring-tx-2.5.xsd

">
    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

        <!--InternalResourceViewResolver是一个辅助Bean,会在ModelAndView返回的视图名前加上prefix指定的前缀,
        再在最后加上suffix指定的后缀。
        例如:由于XXController返回的ModelAndView中的视图名是testview,故该视图解析器将在/WEB-INF/jsp/testview.jsp处查找
        视图。

        这个例子是User类中的UserController
                return new ModelAndView("userlist", "users", userList);
        视图名是userlist
        -->

3.创建model

public class User {
    private String username;
    private Integer age;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}

//模型对于SpringMVC来说必不可少,
// 如果处理程序非常简单,完全可以忽略。模型创建主要的目的就是承载数据,使数据传输更加方便。

4.创建controller

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;

@Controller
@RequestMapping("/user")
//@Controller
//@RequestMapping("/user")
public class UserController extends AbstractController {
    @Override
    protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception {
        List<User> userList = new ArrayList<User>();
        User userA = new User();
        User userB = new User();
        userA.setUsername("张三");
        userA.setAge(27);

        userB.setUsername("李四");
        userB.setAge(37);
        userList.add(userA);
        userList.add(userB);

//        return new ModelAndView("WEB-INF/jsp/userlist.jsp", "users", userList);
//        这里多加了前缀和后缀
//        applicationContext.xml文件中有了
//    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
//        <property name="prefix" value="/WEB-INF/jsp/"/>
//        <property name="suffix" value=".jsp"/>
//    </bean>

        return new ModelAndView("userlist", "users", userList);

    }
}

//总结:applicationContext.xml里的InternalResourceViewResolver要和ModelAndView里的视图名配合

//控制器用于处理Web请求,每个控制器都对应着一个逻辑处理。
//
//请求的最后返回了ModelAndView类型的实例。ModelAndView类在SpringMVC中占有很重要的地位,
// 控制器执行方法都必须返回一个ModelAndView,ModelAndView对象保存了视图以及视图显示的模型数据,
// 例如其中的参数如下。
//
//第一个参数userlist:视图组件的逻辑名称。这里视图的逻辑名称就是userlist,
// 视图解析器会使用该名称查找实际的View对象。
//第二个参数users:传递给视图的,模型对象的名称。
//第三个参数userList:传递给视图的,模型对象的值。

5.创建视图文件userlist.jsp

<%--
  Created by IntelliJ IDEA.
  User: xiaosiyuan
  Date: 2020/5/12
  Time: 18:27
  To change this template use File | Settings | File Templates.
--%>
<%--<%@ page contentType="text/html;charset=UTF-8" language="java" %>--%>
<%@ page pageEncoding="UTF-8" language="java" %>

<%--<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>--%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<h2>This is SpringMVC demo pages</h2>
<c:forEach items="${users}" var="user">
    <c:out value="${user.username}"/><br/>
    <c:out value="${user.age}"/><br/>
</c:forEach>

<%--视图文件用于展现请求处理结果,通过对JSTL的支持,可以很方便的展现在控制器中放入
ModelAndView中的处理结果数据。--%>

<%--<html>--%>
<%--<head>--%>
    <%--<title>This is SpringMVC demo pages</title>--%>
<%--</head>--%>
<%--<body>--%>
<%--<p>hellospringmvc</p>--%>
<%--<c:forEach items="${users}" var="user">--%>
    <%--<c:out value="${user.username}"></c:out>--%>
    <%--<br>--%>
    <%--<c:out value="${user.age}"></c:out>--%>
    <%--<br>--%>
<%--</c:forEach>--%>
<%--</body>--%>
<%--</html>--%>

6.创建Servlet配置文件Spring-servlet.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-2.5.xsd
http://www.Springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-2.5.xsd
">
    <bean id="simpleUrlMapping"
          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/userlist.htm">userController</prop>
            </props>
        </property>
    </bean>
    <!-- 这里的 id="userController"对应的是<bean id="simpleUrlMapping">中的<prop>里面的value-->
    <!--<bean id="userController" class="UserController"/>-->
    <bean id="userController" class="test.controller.UserController"/>

</beans>

<!--因为SpringMVC是基于Servlet的实现,所以在Web启动的时候,服务器会首先尝试加载对应于Servlet的配置文件,
而为了让项目更加模块化,通常我们将Web部分的配置都存放于此配置文件中。-->

至此,已经完成了SpringMVC的搭建,启动服务器,输入网址

可以看到服务器返回界面,如下图所示。

1.不启动Tomcat就会如下


显示1

2.启动了,但是也不行


显示2

tips:
http://java.sun.com/jsp/jstl/functions报红色等参考本人spring踩坑系列博客
Tomcat启动博客里也有
能alt+enter解决的问题,我就没有写博客
spring踩坑——idea里面http://java.sun.com/jsp/jstl/functions报红色

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容