发表于: 2018-01-09 22:39:18

1 499


今天做的事情:

从昨天说的接着讲吧,首先web工程的入口是web.xml。首先,用户输入网址(也就是url),然后送到前端控制器。那么,怎么样的url对应怎么样的模型和视图呢?又交给谁处理呢?

在web.xml中主要可以设置两种解析url的方式,主要差别在于<url-pattern>这个标签,举个例子:

    *.action,可以访问以.action结尾的地址,由DispatcherServlet进行解析。此方法最简单,不会导致静态资源(jpg,js,css)被拦截。

    /,所有访问的地址都由DispatcherServlet进行解析,此方法可以实现REST风格的url,很多互联网类型的应用使用这种方式。但是此方法会导致静态文件(jpg,js,css)被拦截后不能正常显示,所以对静态文件的解析需要配置不让DispatcherServlet进行解析。

    /*,这样配置是不对的,使用这种配置,最重要转发到一个jsp页面时,仍然会由DispatcherServlet解析jsp地址,不能根据jsp页面找到Handler,会报错。

因为任务二要求的是要实现REST风格,所以我采取了“/”的方式。

可以注意到,这里有个<servlet-name>,服务器名称。这东西有点像bean类的id,用来标记服务器的,任务二里面我们只用得上一个,以后可能会用得上更多。那么,如果说这是bean类的id,那么应该注入什么呢?答案是“org.springframework.web.servlet.DispatcherServlet”类,对应的代码块如下:

可以看到,还加载了两个东西,一个是value(文件路径)注入,一个是name(有点像bean里面的ref)。对应的contextConfigLocation是:

主要是这里加了一个监听器....关于监听器(listener),我详细了解了一下:

http://www.cnblogs.com/xdp-gacl/p/3969249.html

applicationContext我们很熟悉,这是SpringMVC和任务一结合的枢纽所在....问题是这个springMVC.xml,现在我们进入这个xml文件中看,怎么来实现配置处理器映射器、适配器等功能的:

关键的地方我加了注释,关于mvc的这两个标签,详细可以参照:

http://www.cnblogs.com/dflmg/p/6393416.html

https://my.oschina.net/HeliosFly/blog/205343

我在这里设置了扫描controller包,controller这个层是用来处理模型和视图的,今天我学的比较少,就写了一个方法,用来查询数据库中所有的学员信息并显示在页面上:

可以清晰地看到,返回了一个视图,并指定了这个视图到哪里去加载,这个方法是WEN-INF/jsp/studentsList.jsp

然后就是jsp了,这是我最看不懂的地方,花了半个晚上依然就学了一点点皮毛....任务二主要进度也是卡在这个地方了....明天打算继续琢磨:

就是一个简单的foreach循环,这里有个小插曲,我发现jsp里面:

这里的属性不是和对象一样.出来的,而是通过反射的办法解析方法名字得到的。仔细想想的确应该是这样,因为这些都是private的实例变量。这也说明了jsp对大小写还是很敏感的。

然后程序成功运行,在浏览器里面右键源代码,我们可以看见:

可以看出来,有些东西(比如字符串拼接符${})是已经编译好才发出去的,我们可以利用好这一点,进行分页处理(其实用分页插件PageHelper也可以分页,我成功运行过,只不过有缺陷,很容易出BUG,我明天打算自己学习jsp,然后自己敲代码实现分页功能)。


明天要做的事情:学习jsp语法


今天的收获:SSM的大致结构搞懂了。



返回列表 返回列表
评论

    分享到