SpringMVC入门案例,详细说明文件目录结构,导包方式及项目创建

    技术2024-01-05  106

    SpringMVC支持使用注解方式配置,比配置文件方式更加的灵活易用,是SpringMVC使用的主流模式。

    传统的servlet是单例,如果业务复杂,存在很多的servlet,就会创建很多对象,造成内存浪费等一系列问题,SpringMVC就很好的解决了这些问题。

    1.项目创建文件目录结构及导包 

    A.创建项目

    新建立的项目在WEB-INF目录下没有lib包和classes包的话,手动创建一下。

    WEB-INF 文件夹下的文件是被保护的,不能被外部访问,所以编译好的class文件,jar包web.xml放到这里比较安全(web.xml这种配置文件很重要肯定不能暴露出去,让用户访问到)。

    B.在WEB-INF目录下创建lib包、classes包

    C.导入相关的jar包

    注意:此时导入的jar包不能采用之前javase项目添加jar包的方式Add as Library,因为这是web项目,到时编译发布的都是WEB-INF下的,将jar包添加到项目中是没有用的,到时发布到tomcat中会导致不能正常运行

    D.配置classes和lib目录

    在右上角1位置点击按钮进入到Project Structure

    然后选择位置2的Paths

    然后选择位置3的Use module compile output path

    在位置4选择刚刚创建的classes文件目录,用来保存编译好的class文件

    最后在5位置先选择apply,此时不要点击OK

    选择Dependencies,然后点击”+”,在弹出框中选择到刚刚创建的lib包然后OK

    此时可以看到lib包已经添加成功,点击Apply---OK 完成jar包的导入

    此时可以看到之前创建的classes文件夹已经变为了橙色,lib文件夹中的jar包已经可以展开,说明WEB项目创建成功

    web项目的结构层级关系

    |--静态web资源,html,css,js,图片,音频。视频,动画等

    |--WEB-INF

                 |--classes  //动态web资源class文件

                 |--lib  //动态web资源依赖的jar包

                 |--web.xml  //web应用的核心配置文件

                 |--xxxxx   //其他不希望外界直接访问的文件

    2.创建SpringMVC项目

    方式一:

    A.在web.xml中配置前端控制器

    <?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"> <!--前端控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!--/* 范围太大:*.do ,*.action 都行,可以自己自由命名--> <url-pattern>*.action</url-pattern> </servlet-mapping> </web-app>

    B.创建SpringMVC核心配置文件

    因为SpringMVC默认会自动在web应用的WEB-INF目录下去寻找[前端控制器ServletName]-servlet.xml作为当前SpringMVC的核心配置文件,所以就在WEB-INF目录下创建文件。

    关于文件名:

    上面web.xml中配置的前端控制器的<servlet-name>是springmvc,所以按照要求正确的文件名应该是(springmvc-servlet.xml

    创建springmvc-servlet.xml这个文件,这个文件本身其实就是Spring的配置文件,所以导入Spring相关的约束信息,包括 beans、context、mvc

    创建如下:

    目录结构如下 

    在springmvc-servlet.xml中配置,配置注解方式MVC开关时主要选择后缀为mvc的

    springmvc-servlet.xml中具体配置如下:

    视图解析器中prefix为前缀,suffix为后缀

    <?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 https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <!--配置包扫描--> <context:component-scan base-package="cn.wyy.web"/> <!--配置注解方式MVC开关--> <mvc:annotation-driven/> <!--配置视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> <!--配置视图解析器--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans>

    C. 在src目录下创建控制器类MyController,并返回视图test01

     D.根据前缀中配置的路径及控制器中返回的视图名称,创建如下目录及文件

    在test01.jsp中通过EL表达式获取Controller中设置的值

    <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> 控制器中设置的值为:<br/> ${k1}<br/> ${k2}<br/> </body> </html>

    E. 部署运行程序

    根据@RequestMapping中的配置可知,访问的地址为

    http://localhost/springmvctest01_war_exploded/web01/test01.action

    访问验证成功

    方式二 

    对于上面的步骤B,

    SpringMVC默认会自动在web应用的WEB-INF目录下去寻找[前端控制器ServletName]-servlet.xml作为当前SpringMVC的核心配置文件,也可以在servlet的配置中自己指定核心配置文件位置,这样就可以改变这个核心配置文件的路径及名称了

    具体的操作:在web.xml中的servlet标签中加入<init-param>标签实现,一般习惯于将该配置文件放置在src根目录下

    修改后的web.xml内容如下,可以自由命名:如:springmvc-my.xml

    <?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"> <!--前端控制器--> <servlet> <servlet-name>springmvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:springmvc-my.xml</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>springmvc</servlet-name> <!--/* 范围太大:*.do ,*.action 都行,可以自己自由命名--> <url-pattern>*.action</url-pattern> </servlet-mapping> </web-app>

    修改后的目录结构如下:

    其他与方式一保持一致,部署项目,测试如下,访问成功

     

    Processed: 0.016, SQL: 9