java web开发(编写第一个spring mvc)

Posted 嵌入式-老费

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java web开发(编写第一个spring mvc)相关的知识,希望对你有一定的参考价值。

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】

        编写mvc并不稀奇,只要选择合适的框架就可以。那么,spring mvc是什么呢?之前,我们讨论过,spring mvc的本质还是spring,只不过在这个基础之上实现了mvc的功能。下面就看看,在IDEA环境上面开始进行spring mvc开发。部分内容参考了这个链接,https://cloud.tencent.com/developer/article/1675364,在此表示感谢。

1、IDEA创建工程,选择“Spring”=》“Spring MVC”,

2、输入工程名“Hello”,单击确定即可

        默认系统帮助用户建立了三个xml文件,一个是web.xml,这个大家都熟悉,是j2ee的基本配置。一个是applicationContext.xml,这个是spring需要添加的配置,主要是bean添加。剩下的那个就是dispatcher-servlet.xml。在web.xml中大家会看到有一个dispatcher的servlet,那么这里的dispatcher-servlet就是对dispatcher做进一步属性配置。

3、准备tomcat的配置

        配置有两部分,一部分是tomcat的端口(尽量不要是80、8080这些常见端口),一部分是deployment的配置。

4、启动tomcat,却发现tomcat无法正常启动

        究其原因,主要是因为没有配置lib库,选择“File”->“Project structure”,单击Fix按钮,选择“Add all missing dependencies of 'Hello' in the artifact” 即可。

5、重新启动Tomcat,如果看到下面这样的网页,那就代表Tomcat启动成功了,

6、修改web.xml中的*.form,变为/

    这主要是因为不想后续网页变成*.form这样的形式。

7、在src目录添加wormday.springmvc.helloworld.HiController.java代码

package wormday.springmvc.helloworld;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/hi")
public class HiController 

    @RequestMapping("/say")
    public String say() 
        return "/WEB-INF/jsp/say.jsp";
    

8、WEB-INF目录下添加jsp目录,jsp目录下添加say.jsp文件,补充完say.jsp内容

<%--
  Created by IntelliJ IDEA.
  User: feixiaoxing
  Date: 2022/10/6
  Time: 8:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
Hello, World
</body>
</html>

9、补充完整dispatcher-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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:component-scan base-package="wormday.springmvc.helloworld"/>
</beans>

10、重新启动tomcat,重新输入localhost:8090/Hello_war_exploded/hi/say,就会看到这样的打印,

11、前面我们看到HiController.java中采用了绝对引用,如果改成相对引用呢,

package wormday.springmvc.helloworld;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/hi")
public class HiController 

    @RequestMapping("/say")
    public String say() 
        return "say";
    

         这个时候就要对dispatcher-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"
       xmlns:context="http://www.springframework.org/schema/context"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans.xsd
       http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:component-scan base-package="wormday.springmvc.helloworld"/>

    <!--指定视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <!-- 视图的路径 -->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!-- 视图名称后缀  -->
        <property name="suffix" value=".jsp"/>
    </bean>
</beans>

        重新启动tomcat,如果还能看到一样的Hello world打印,那么代表修改成功。

12、如果希望say.jsp带参数显示,应该怎么做,首先需要修改HiController.java文件,

package wormday.springmvc.helloworld;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model; // 这里导入了一个Model类
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/hi")
public class HiController 

    @RequestMapping("/say")
    public String say(Model model)  // 参数中传入Model
        model.addAttribute("name","baidu"); // 指定Model的值
        model.addAttribute("url","http://www.baidu.com"); // 指定Model的值
        return "say";
    

        其次就是修改say.jsp文件,

<%--
  Created by IntelliJ IDEA.
  User: feixiaoxing
  Date: 2022/10/6
  Time: 8:33
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
hello world,$name
<br/>$url</body>
</html>

        重新启动Tomcat,输入localhost:8090/Hello_war_exploded/hi/say,就会看到这样的页面,

13、总结

        之前用servlet+jsp+mysql,其实也是可以搭建一个mvc框架的。那么,使用了spring之后的mvc有什么不一样的。我个人的总结有这么几点,第一,没有了main函数,所有的入口来自于dispatcher;第二,controller类不需要继承HttpServlet;第三,url和函数之间的mapping,用RequestMapping等注解就可以解决。不需要写在web.xml里面。

以上是关于java web开发(编写第一个spring mvc)的主要内容,如果未能解决你的问题,请参考以下文章

java web开发(编写第一个spring mvc)

java web开发(第一个spring程序)

java web开发(第一个spring程序)

java web开发(第一个spring程序)

新书《基于Spring的Java Web开发技术详解》开工了!

java web开发(编写第一个servlet程序)