Spring MVC Hello案例

来源:互联网 发布:mac qq怎么上传群文件 编辑:程序博客网 时间:2024/06/05 07:36

机器语言:计算机所能识别的只有机器语言,即0和1组成的代码
汇编语言:实质与机器语言相同,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别,汇编程序的每一句指令只能对应实际操作的一个很细微的过程
高级语言:现在的编译语言多是高级语言,将许多相关的机器指令合为单条指令,还去除了很多与操作有关但与完成工作无关的细节,如使用堆栈,寄存器等


Spring MVC第一个Hello案例:
步骤:

  1. 导入相关的jar包

2.配置web.xml——配置分发器(dispatcherServlet) 作为核心分发器,容器一启动就要启动,应用程序一启动就要启动(load-on-startup)。

<servlet>  <servlet-name>springmvc</servlet-name>  <!--crtl+shift+T打开出现Open Type 对话框,寻找类-->  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  <!-- 核心分发器,容器一启动就要启动,设置优先级1,越小优先级越高 -->  <load-on-startup>1</load-on-startup>  </servlet>  <servlet-mapping>  <servlet-name>springmvc</servlet-name>  <!--没具体要求,如*.html也可以-->  <url-pattern>*.do</url-pattern>  </servlet-mapping>

3.添加Spring MVC配置文件xml头文件,默认在WEB-INF下添加(安全目录,客户端无法直接到达),名字为【ServletName】-servlet.xml,名字与上面2中你设置的名字相同。关于头文件,不用记,查自带的文档找到xml文件模板拷贝。
查找:docs→references→html→index.html→V.The Web→17.3.1
这里写图片描述


这里写图片描述
不是注解开发是把模板中

<context:component-scan base-package="org.springframework.samples.petclinic.web"/>

去掉,不然会发生错误,本文是Spring MVC的第一个案例,利用非注解开发,旨在熟悉结构图。


4.编写Hello.java(相当于Struts2中的Action),需要实现Controller接口

import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import org.springframework.web.servlet.ModelAndView;import org.springframework.web.servlet.mvc.Controller;public class Hello implements Controller{    @Override    public ModelAndView handleRequest(HttpServletRequest arg0,            HttpServletResponse arg1) throws Exception {        // TODO Auto-generated method stub        ModelAndView  mv=new ModelAndView();//      封装要显示到视图的数据        mv.addObject("msg", "hello spring mvc");//      设置视图名        mv.setViewName("hello");        return mv;    }}

5.完善第三步的spring mvc的配置文件

<!-- 配置handlerMapping,crtl+shift+T查找,输入BeanNameURL...-->    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>    <!-- 配置handlerAdapter,crtl+shift+T查找,输入SimpleController...-->    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"></bean>    <!-- 配置渲染器 ,不需要记,在文档中找,17.5Resolving views,选ID为jspViewResolver就ok-->    <bean id="jspViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>    <property name="prefix" value="/WEB-INF/jsp/"/>    <property name="suffix" value=".jsp"/>    </bean>    <!-- 配置请求和处理器 -->    <bean name="/hello.do" class="hello.Hello"></bean>

6.编写jsp 在自给的index.jsp改

<body>   ${msg} <br>  </body>

一些快捷键和额外知识点:

  1. 第二步创建XML选basic temple就好
  2. welcome-file-list 当用户在url输入web context -root(默认工程名)时直接访问,有多个是会按顺序一个个去检查web目录下有无这个文件,如果有访问,结束,如果不存在,一次查找,以此类推
  3. xml里面导入自动提示命名空间 ,windows里面perferences找XML catalog这里写图片描述
  4. 改变web context-root.右键工程名字properties→web
  5. EL表达式(expression language) 为了使JSP写起来更方便,格式是${}
  6. 在第五步代码中我们会看到
<bean name="/hello.do" class="hello.Hello"></bean>

为什么我们还要配置handlerMapping和handlerAdapter,因为要映射我们需要这两个,这里只是一个bean的名字,没法映射,所以我们用的也是BeanNameUrlHandlerMapping,其实在spring mvc定位具体Controller过程中,会产生handlerMapping和handlerAdapter集合,包含了所有映射,收到请求会先遍历handlerMapping,寻找最合理的映射,然后遍历handlerAdapter寻找最合适的handlerAdapter去处理handler(即Controller)


7.前面配置渲染器看到这段代码

<property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/>

分别是前后缀的意思,前面设计了setViewName为hello,所以这个类返回modelAndView后view就是hello,要把它转化为真正的view对象,就是进行视图解析(ViewResolver),上述代码意思就时相当于访问
/WEB-INF/jsp/hello.jsp,所以你的hello.jsp要放在jsp文件夹。


Servlet的on-startup元素是可选的,如果存在,则在应用程序启动时加载servlet并调用它的init方法,若不存在,则在该servlet的第一个请求时加载。

1)load-on-startup元素标记容器是否在启动的时候就加载这个servlet(实例化并调用其init()方法)。

2)它的值必须是一个整数,表示servlet应该被载入的顺序

2)当值为0或者大于0时,表示容器在应用启动时就加载并初始化这个servlet;

3)当值小于0或者没有指定时,则表示容器在该servlet被选择时才会去加载。

4)正数的值越小,该servlet的优先级越高,应用启动时就越先加载。

5)当值相同时,容器就会自己选择顺序来加载。

原创粉丝点击