发表于: 2018-01-09 09:02:13
1 520
今天完成的事情
1.写一下创建mavenweb项目的步骤吧,和之前的maven项目不同的是创建时的选项要选择webapp,之后就和之前一样了。然后直接在idea左下的Terminal终端输入mvn install,编译打包成功,显示BUILD SUCCESS字样。重新查看项目的目录,我们发现项目根目录下面多了target目录,该目录下也打出了war包。
2.将应用部署到tomcat服务器,在此之前去官网下载了解压版的tomcat。将上面的target目录下的war包copy到tomcat目录下的webapps目录下,使用命令行(cmd)切换到tomcat安装目录的bin目录下,执行startup.bat脚本,执行之后tomcat会部署webapps目录下的应用war包。稍等应用部署完毕之后,打开浏览器,输入localhost:8080/SpringMVC,可以看到输出了Hello World!。见下图:
然后在浏览器输入网址,就可以看到结果图:
3.找到一篇靠谱的springmvc教程,开始按照教程配置自己的demo
显示按照教程创建maven项目,完善目录,直接上传项目最终的结构:
上图就是完整的项目结构,有一些文件夹并没有用到。接下来就是重中之重了:在此之前记一下自动生成xml文件的操作:选择框架支持时,勾选springconfig.xml,就会自动生成xml文件。
(1)配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"version="3.1">
// 以上是自动生成,这里不讨论
<display-name>Archetype Created Web Application</display-name> //表述性说明文字,没什么用
<!--welcome pages-->
<welcome-file-list> //欢迎界面,俗称默认界面,如果输入的url没有包含servlet,jsp等资源,此时就会显示这个jsp界面。
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<!--配置springmvc DispatcherServlet-->
<servlet> //用来声明一个servlet的数据
<servlet-name>springMVC</servlet-name> //该servlet的名称
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> //该servlet类的全路径
<init-param> //用来定义参数
<!--配置dispatcher.xml作为mvc的配置文件-->
<param-name>contextConfigLocation</param-name> //参数的名称
<param-value>/WEB-INF/dispatcher-servlet.xml</param-value> //参数的地址,或者叫取值地点
</init-param>
<load-on-startup>1</load-on-startup> //表示启动后加载的优先级很高
<async-supported>true</async-supported> //设置异步处理的支持 默认是false,设置为true,表示打开异步处理支持
</servlet>
<servlet-mapping> //用来定义servlet所对应的url
<servlet-name>springMVC</servlet-name> // servlet名称
<url-pattern>/</url-pattern> 指定servlet所对应的url
</servlet-mapping>
<!--把applicationContext.xml加入到配置文件中-->
<context-param> //全局范围内环境参数初始化
<param-name>contextConfigLocation</param-name> //参数名称
<param-value>/WEB-INF/applicationContext.xml</param-value> //参数取值
</context-param>
<listener> //用来设定listener接口
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> //定义listener的类名称
</listener>
</web-app>
在这里涉及到了新的知识点
- 异步处理支持:有了该特性,Servlet 线程不再需要一直阻塞,直到业务处理完毕才能再输出响应,最后才结束该 Servlet 线程。在接收到请求之后,Servlet 线程可以将耗时的操作委派给另一个线程来完成,自己在不生成响应的情况下返回至容器。针对业务处理较耗时的情况,这将大大减少服务器资源的占用,并且提高并发处理速度。
上传一下默认界面和指定界面吧:
上面就是默认的界面,可以看到url
这个就是指定的界面,也可以看到url,对比这两个界面的url,就可以比较清楚地理解了。
还有init-param和context-param的区别:只知道是两种不同类型的参数,但是具体的就不明白了,看文档也看不懂,模糊地觉得前者是一些操作,后者是一些环境
(2)配置dispatcher-servlet.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
<!--此文件负责整个mvc中的配置-->
<!--启用spring的一些annotation -->
<context:annotation-config/> //启用注解
<!-- 配置注解驱动 可以将request参数与绑定到controller参数上 -->
<mvc:annotation-driven/>
<!--静态资源映射-->
<!--本项目把静态资源放在了webapp的statics目录下,资源映射如下-->
<mvc:resources mapping="/css/**" location="/WEB-INF/statics/css/"/>
<mvc:resources mapping="/js/**" location="/WEB-INF/statics/js/"/>
<mvc:resources mapping="/image/**" location="/WEB-INF/statics/image/"/>
<!-- 对模型视图名称的解析,即在模型视图名称添加前后缀(如果最后一个还是表示文件夹,则最后的斜杠不要漏了) 使用JSP-->
<bean id="defaultViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/views/"/><!--设置JSP文件的目录位置--><property name="suffix" value=".jsp"/>
<!-- 默认的视图解析器 在上边的解析错误时使用 (默认使用html)- --><property name="exposeContextBeansAsAttributes" value="true"/>
</bean>
<!-- 自动扫描装配 -->
<context:component-scan base-package="example.controller"/>
</beans>
(3)配置applicationContext.xml文件
这个文件主要负责一些非mvc组件(或者其他组件)的配置,暂时没有,所以是空的。
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">
<context:component-scan base-package="example"/>
</beans>
(4)创建controller类
package example.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller //指定这个类是springmvc控制器
@RequestMapping("/home") //此处理器上所有方法都和/home路经相关
public class IndexController {
@RequestMapping("/index") //用于声明index()方法作为控制器的默认方法来处理http get请求
public String index() {
return "index";
}
}
所以可以通过加上home/index访问下面的jsp
(5)创建jsp视图
views文件夹下创建index.jsp
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html> //开始标签
<head>
<title>Index</title> //标题,浏览器页面卡显示的名称<link rel="stylesheet" type="text/css" href="<c:url value="/css/test.css"/> "/> //rel属性规定当前文档与被链接文档的关系
//stylesheet是文档的外部样式表,我的理解是这句话的意思是给当前文档加了一些来自外部文档的要求
</head>
<body> //body中间就是要输出的内容
<p>Spring MVC based on XML config success!</p>
</body>
</html> //结束标签
(6)创建链接文档
p
{
background-color: red;
font-family: "Courier New";
font-size:100px;
}
也就是说jsp文件会遵从这个链接文档的一些限制要求来进行输出,我这么理解不知道对不对
然后就是用tomcat本地跑一下验证了。
今天遇到的问题
教程的错误,连虎子师兄都搞不定,耗费了大概四个小时,以后一定要注意教程的选择;而且这个日报在不久不小心关掉了,所以内容略有些缩水。
之前的教程频繁报错500,我尝试多次无果后,请教虎子哥,没想到虎子哥也料理不了它,所以后来更换了教程。更换完教程之后也碰到了一些小问题,不过都解决了。
今天的收获
配置了springmvc,并且明确了找教程的要求。配置过程中一直在百度配置文件的含义,清楚了不少配置文件的意思。而且通过这个项目还接触到了一个很好玩儿的小东西。感觉css还挺有意思。。
明天的计划
打算明天开始设计REST风格接口和svn的搭建和使用。
评论