机器语言:计算机所能识别的只有机器语言,即0和1组成的代码
汇编语言:实质与机器语言相同,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别,汇编程序的每一句指令只能对应实际操作的一个很细微的过程
高级语言:现在的编译语言多是高级语言,将许多相关的机器指令合为单条指令,还去除了很多与操作有关但与完成工作无关的细节,如使用堆栈,寄存器等
Spring MVC第一个Hello案例:
步骤:
- 导入相关的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>
一些快捷键和额外知识点:
- 第二步创建XML选basic temple就好
- welcome-file-list 当用户在url输入web context -root(默认工程名)时直接访问,有多个是会按顺序一个个去检查web目录下有无这个文件,如果有访问,结束,如果不存在,一次查找,以此类推
- xml里面导入自动提示命名空间 ,windows里面perferences找XML catalog
- 改变web context-root.右键工程名字properties→web
- EL表达式(expression language) 为了使JSP写起来更方便,格式是${}
- 在第五步代码中我们会看到
<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)当值相同时,容器就会自己选择顺序来加载。