发表于: 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的大致结构搞懂了。
评论