AJAXJS MVC 入门-阿里云开发者社区

开发者社区> sp42> 正文

AJAXJS MVC 入门

简介: AJAXJS Framework 主页:https://framework.ajaxjs.com AJAXJS MVC 是一款简单高效的 MVC 框架。它首先参照了 SpringMVC 中最精炼的部分也就是“约定优于配置”的思想,基本上无须特定的配置,只要写好了注解就可定义你自己的控制器。
+关注继续查看

AJAXJS Framework 主页:https://framework.ajaxjs.com
AJAXJS MVC 是一款简单高效的 MVC 框架。它首先参照了 SpringMVC 中最精炼的部分也就是“约定优于配置”的思想,基本上无须特定的配置,只要写好了注解就可定义你自己的控制器。

下面我们一步步来展现控制器是如何生成。

导入 JAX-RS 包

首先把 JAX-RS JAR 引入你的 claspath。

javax.ws.rs-api-2.0.rev.A.jar

然后还要把 jar 加入 Eclipse 的 Deployment Assembly,不然 Tomcat 会告诉你找不到类。

MVC 框架依赖基于 JSR 311 规范的 JAX-RS 包,借用了其中符合语义的注解,而不是自己再定义一套注解,达到了代码复用的目的。

编写 Controller 类

首先编写 Controller 类。控制器类至少要有 @Controller 类注解以及实现 IController 接口,两者必不可少;接着要指定控制器路径的前缀,通过 @Path 注解完成。如下 @Path(“/simple”) 等于在浏览器能使用地址 http://localhost/projectContext/simple 访问,其中 projectContext 是所在的项目名称;simple 就是 URL 的前缀,URL 另外的还有有别的部分。

import javax.mvc.annotation.Controller;
import javax.ws.rs.DELETE;
import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;

import com.ajaxjs.mvc.controller.IController;

@Controller
@Path("/simple")
public class SimpleController implements IController {
    @GET
    public String showHTML() {
        return "html::Hello World!";
    }

    @POST
    public String gotoJSP() {
        return "/index.jsp";
    }

    @PUT
    public String redirect() {
        return "redirect::http://blog.csdn.net/zhangxin09";
    }

    @DELETE
    public String showJSON() {
        return "json::{\"name\":\"Jack\"}";
    }
}

MVC 支持基本的 HTTP 四个方法,如上例的 @GET、@POST、@PUT、@DELETE 注解所示,都是方法的注解,定义在不同的方法中。也就是说,只要用户访问 /simple 这个路径,即可执行这个类身上的方法。上述例子代码中的 @Get 注解对应 showHTML() 方法,意思是 GET 请求到 /simple 这个路径上马上执行 showHTML()。这个方法——这个方法具体干什么呢?就是输出一段 HTML,请注意字符串里面的 html::XXXX 是约定好的,前缀 html:: 是固定的,后面表示 response 要输出的 HTML 字符串。如下图所示。
输入图片说明

实际 html:: 的作用是将必须的 HTML 标签“环绕”了你想输出的任意字符串,好比说上面的 HTML 是:

<html><meta charset="utf-8" /><body>Hello World!</body></html>

除了 html:: 还有其他不同类型的前缀:

前缀 作用
html:: HTML 字符串
json:: Json 字符串
redirect:: 客户端重定向
默认字符串 JSP 模板 Forward 输出网页

除了上述约定,您也可以返回 void——那就是什么都不做,这时候可以控制 resposne 对象进行二进制输出、图片输出、文件下载等。

MVC 模型中的 C 的作用到这里就可以说是到此为止了。下一步的工作是 View 来承担。从 C 到 V 之间的过程可以这样理解:它表示框架响应终端客户端请求,最终呈现给终端客户端的一种表现形式,它可以是 一个 HTML 或 JSP 页面,可以是一段原始文本,可以是一张图片,可以是一段 JSON 格式的字符串等等。视图的任务就是将入口函数的返回值(一个 Java 对象)渲染到 HTTP 响应流中。

加入到 web.xml 使得可被扫描

写好了 Controller 类不等于就完事了,还需要加入到 web.xml 使得控制器类可被扫描。
如下配置 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"
    id="WebApp_ID" version="3.0">
    <display-name>ajaxjs-web</display-name>


    <filter>
        <description>MVC 过滤器</description>
        <filter-name>MVC_GlobalFilter</filter-name>
        <filter-class>com.ajaxjs.mvc.controller.MvcDispatcher</filter-class>

        <init-param>
            <description>指定搜索的包名,多个可以用 逗号 分开</description>
            <param-name>controller</param-name>
            <param-value>test.com.ajaxjs.mvc.controller</param-value>
        </init-param>
    </filter>

    <filter-mapping>
        <filter-name>MVC_GlobalFilter</filter-name>
        <!--“/*”表示拦截所有的请求 -->
        <url-pattern>/*</url-pattern>
    </filter-mapping>
</web-app>

web.xml 需要加入 MvcDispatcher 过滤器,将 IController 控制器的类收集起来,“听候发落”。因为接收到请求的还是 filter 过滤器。过滤器本身是个链式调用,到 MvcDispatcher 这里来的时候就是根据 url、参数、HTTP 方法等等的不同分发来决定把这次请求分发到那个应该要得到请求的控制器中。这就是 Dispatcher 分发器的作用。实质上这里就是要接管所有的 HTTP 请求。如果符合控制器规则的,就执行处理,不符合的返回到标准 Servlet 过滤器中。此过程也是过滤器链式调用的应用。故所以我们定义的 url 规则是 ,但这里写得是 .do,为什么志是对 .do 扩展名的请求拦截呢?这是因为 Tomcat 不仅能处理 Servlet、JSP,而且它还是一个静态资源的服务器。还能呈现图片、CSS、JS 这些静态资源。为避免这些请求到跑到 MVC 分发器这里来,所以我们约定只有 *.do 扩展名的才能被控制器识别执行。

控制台显示如下图所示,告诉你扫描了哪些类。
输入图片说明
要注意的是,扫描的不是类名,而是包名。多个包的话可用逗号分开。
包名应该是包含控制器 IController 的包,例如 test.com.ajaxjs.mvc.controller 包下面应有 SimpleController 类。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
使用NAT网关轻松为单台云服务器设置多个公网IP
在应用中,有时会遇到用户询问如何使单台云服务器具备多个公网IP的问题。 具体如何操作呢,有了NAT网关这个也不是难题。
26493 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,大概有三种登录方式:
2777 0
阿里云服务器ECS远程登录用户名密码查询方法
阿里云服务器ECS远程连接登录输入用户名和密码,阿里云没有默认密码,如果购买时没设置需要先重置实例密码,Windows用户名是administrator,Linux账号是root,阿小云来详细说下阿里云服务器远程登录连接用户名和密码查询方法
10919 0
使用SSH远程登录阿里云ECS服务器
远程连接服务器以及配置环境
2245 0
使用OpenApi弹性释放和设置云服务器ECS释放
云服务器ECS的一个重要特性就是按需创建资源。您可以在业务高峰期按需弹性的自定义规则进行资源创建,在完成业务计算的时候释放资源。本篇将提供几个Tips帮助您更加容易和自动化的完成云服务器的释放和弹性设置。
11861 0
windows server 2008阿里云ECS服务器安全设置
最近我们Sinesafe安全公司在为客户使用阿里云ecs服务器做安全的过程中,发现服务器基础安全性都没有做。为了为站长们提供更加有效的安全基础解决方案,我们Sinesafe将对阿里云服务器win2008 系统进行基础安全部署实战过程! 比较重要的几部分 1.
8721 0
阿里云服务器安全组设置内网互通的方法
虽然0.0.0.0/0使用非常方便,但是发现很多同学使用它来做内网互通,这是有安全风险的,实例有可能会在经典网络被内网IP访问到。下面介绍一下四种安全的内网互联设置方法。 购买前请先:领取阿里云幸运券,有很多优惠,可到下文中领取。
11761 0
腾讯云服务器 设置ngxin + fastdfs +tomcat 开机自启动
在tomcat中新建一个可以启动的 .sh 脚本文件 /usr/local/tomcat7/bin/ export JAVA_HOME=/usr/local/java/jdk7 export PATH=$JAVA_HOME/bin/:$PATH export CLASSPATH=.
4549 0
+关注
sp42
移动项目技术负责人。多年全栈经验,熟悉 Java 和 JS,CSDN 博客技术专家,著有《ExtJS 详解与实践》等书。
294
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载