【SpringMVC】Helloworld 今天药忘吃喽~ 2022-06-05 02:42 164阅读 0赞 SpringMVC就不同于Spring是处理java和xml的数据传输了,SpringMVC是处理views和controllers之间,网页和actions之间,说白了也就是java文件和jsp之间传输的东西。就是Servlet和Struts2那套,具体可以参考《【Servlet】最简单的Servlet JavaWeb程序》([点击打开链接][Link 1])和《【Struts2】Struts2纯手工安装、配置以及Helloworld,以最新版struts 2.3.20 GA做例子》([点击打开链接][Link 2]),由于Servlet太原始显得太low,近年来Struts2也频频给没事找事的黑客爆出各种随便爆Struts2工程的漏洞,所以业内貌似有种都使用SpringMVC的趋势。SpringMVC和Spring是没啥绝对关系的,大家不要看Spring就觉得SpringMVC也是和Spring难得要死,其实这玩意入门难度也就和struts2差不多。下面举一个例子可以说明。 **一、SpringMVC的下载和配置** 其实就是《 【Spring】Spring3.x的下载与配置》([点击打开链接][Link 3])需要的包,提取同样的包到你的JavaEE工程根目录下的WEB-INF\\ib,最终使用的具体如下图所示,和Spring3.x需要的包是一模一样的,因为Spring希望他能够支配整个java工程,从javase到javaee再到android,反正有一个java一个xml的地方就有它。 ![20171115164930491][] **二、工程目的和目录结构** 下面的例子希望将HelloController.java设置的message打印到hello.jsp上面来。 ![20171115170157275][] 工程的目录结构如下: ![20171115170350964][] **三、制作过程** 1、首先是所有Javaee工程,WEB-INF下的核心web.xml <?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> <servlet> <servlet-name>SpringMVC</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>SpringMVC</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> 核心配置文件,加载SpringMVC的同时指明这个加载SpringMVC的servlet的配置文件是XX-servlet.xml,具体如下。SpringMVC规定,所有Servlet配置文件都必须xx-serlvet.xml这样格式命名,如此web.xml配置完毕,SpringMVC就会自动为servlet找以其名字命名的xx-serlvet.xml进一步读取配置。 ![20171115170820260][] 2、之后是SpringMVC-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:p="http://www.springframework.org/schema/p" 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-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <context:component-scan base-package="test.actions" /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/views/" /> <property name="suffix" value=".jsp" /> </bean> </beans> 这个文件完全指明了.java文件和.jsp之间个关系,具体如下图所示: ![20171115171908715][] 3、接下来马上来看test.action下的HelloController.java,配合上面的SpringMVC-servlet.xml和注释,相信大家已经非常清晰了,无须多加赘述了。 package test.actions; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; @Controller public class HelloController { @RequestMapping(value = "/hello")//指明我这个方法是相应/hello这个链接 public String hello(ModelMap model) {//这个方法名倒不是很重要,貌似没什么卵用,习惯上和@RequestMapping指明的相应连接匹配 model.addAttribute("message", "你好,Spring MVC!");//指明hello.jsp的${message}的值是"你好,Spring MVC!" return "hello";//指明我相应完/hello会去到hello.jsp,将我的东西打印出来,真正做到MVC中的VC分离,习惯性相应的链接和.jsp匹配 } /* 接下来要扩充,比如要加/a这个跳转,可以这样扩充: * 再下面接着开新方法 @RequestMapping(value = "/a") public String a(ModelMap model) { //a需要的代码 return "a"; } */ } 4、最后是hello.jsp,基本上是刚学网页都要懂的东西,不加多说了。 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>hello.jsp</title> </head> <body> 从HelloController.java传过来的message=${message} </body> </html> 大家可以看到,这里的SpringMVC在jsp打印变量的方法和《【Servlet】利用Servlet3.0标准与JSTL表达式实现文件上传系统,支持图片上传后显示》( [点击打开链接][Link 4])中的jstl表达式部分是一模一样,但做SpringMVC就不用自己再配一个jstl.jar和standard.jar,非常方便,应该该部分的内容已经在Spring的jar包中已经存在。 上面就是SpringMVC的一套基本流程。 [Link 1]: http://blog.csdn.net/yongh701/article/details/40154691 [Link 2]: http://blog.csdn.net/yongh701/article/details/44277309 [Link 3]: http://blog.csdn.net/yongh701/article/details/78474473 [20171115164930491]: /images/20220605/bb0d8d2d3bec46a1b0c2d3c74836285e.png [20171115170157275]: /images/20220605/fbb23d383d2c4c0f948ded3e05487641.png [20171115170350964]: /images/20220605/6d1efb634cea4d92a4817c22e1724493.png [20171115170820260]: /images/20220605/ccf8173167d6413d847b210961e6563a.png [20171115171908715]: /images/20220605/f28fcfb780524937a00964d4dcf972c2.png [Link 4]: http://blog.csdn.net/yongh701/article/details/44260801
还没有评论,来说两句吧...