发表于: 2016-03-14 22:03:13
1 4286
【操作步骤】
1.成功启动Jetty,但是为此我操作了3步,但我推断只有一步起了作用:
1.1 我首先在Eclipse中安装了Run-Jetty-Run,网上说这个插件里面整合了6、7、8三个版本的Jetty,所以我认为安装了这个插件理论上就可以启动Jetty了,但是我失败了,原因不明。
1.2 我还在网上下载了jetty-distribution-9.3.7.v20160115.tar.gz,并将其解压到eclipse安装目录下,网上说我应该先在jetty的解压目录下运行命令java -jar start.jar,启动Jetty,然后将项目export出的war包放在jetty/webapps目录下,就和tomcat一样,我没试,既然一样,还不如用tomcat。
1.3 我在项目的pom.xml文件中配置了如下代码:
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.10</version>
</plugin>
然后在终端操作:(1)先进入项目所在目录;(2)执行命令:mvn clean。网上说这个命令的作用是清除编译后的目录,我觉得这个命令的作用就是先把以前编译过东西都清除掉,然后重新编译。(3)执行命令:mvn compile。该命令作用是编译。(4)执行命令:mvn jetty:run。然后就是一阵好等,完了后。会在终端上显示:
[INFO] Started Jetty Server
这样就启动了Jetty。
我觉得就是没有1.1和1.2,只要我在pom.xml中配置了jetty,我就可以直接运行jetty:run。
2.安装PostMan。由于被墙了,不能通过chrome的应用商店直接安装,我下载了postman-rest-client.zip离线安装包,解压缩到/usr/lib/chromium-browser/plugins目录下,然后在chrome浏览器地址栏输入chrome://extensions,选中开发者模式-->加载已解压的扩展程序,选中解压目录,然后重启chrome就可以了。
【知识总结】
1.理一下整个项目的思路。
1.1 首先新建了一个maven web项目。
1.2 配置pom.xml,这个文件里面包含了该项目所需要的jar包。
1.3 配置web.xml,这个文件里面包含了SpringMVC框架所需要的部件,包括log4j.xml、applicationContext.xml的所在位置,以及servlet.xml的命名,例如如果想要将servlet.xml命名为dispatcher-servlet.xml,就需要在web.xml里面注明。
1.4 配置dispatcher-servlet.xml,这个文件里面有注解的相关信息。
1.5 配置config.properties,这个文件里面只有数据库连接的信息。
1.6 配置dataSource.xml,这个文件里面是数据库连接的一些信息,如连接池的相关设定。
1.7 配置log4j.xml,这个文件里面是日志输出设置。
1.8 配置applicationContext.xml,在这个文件里面:(1)config.properties和dataSource.xml结合到了一起,因为dataSource.xml中要调用config.properties中的参数;(2)标明了数据库中的对象在models文件夹下,例如我们在数据库中有一个Student数据,它有一些属性name、age什么的,根据这些属性我们会构造一个Student类,这个Student类里面只有数据库里的那些属性,在applicationContext.xml中就标明了Student类是在models文件夹下;(3)标明了对数据库进行操作的类和方法是在dao文件夹下,例如我们需要对数据库中的Student数据进行增删改查操作,那么会首先建立一个接口文件StudentMapper.java,在这个接口文件里面就有对Student的增删改查的方法,我们还会建立一个StudentMappe.xml文件,这个文件里面有具体的sql语句,这两个文件都在dao目录下,这一点也会被表明在applicationContext.xml文件中。
所以,总的来说,applicationContext.xml文件里面主要写的就是对数据库的一些相关操作内容。
1.9 然后写数据层的东西,一共有三个:Student.java类、StudentMapper.java接口、StudentMapper.xml。其中Student.java类里面是属性;StudentMapper.java接口里面是方法(未实现);StudentMapper.xml是sql语句。在StudentMapper.xml开头会有一个<mapper>标签,在这个标签里面把namespace指向了StudentMapper.java接口。所以StudentMapper.xml和StudentMapper.java里面的方法名、返回值、参数都是一一对应的,这也表明StudentMapper.java里的那些方法在StudentMapper.xml被实现了。
1.10 然后写服务层的东西,一共有两个:StudentService.java接口和StudentServiceImpl.java实现类。StudentService.java里面的那些方法和StudentMapper.java里的那些方法一模一样,只是后面加上了throws Exception;而且在StudentServiceImpl.java类里面并没有真正去实现StudentService.java接口里的方法,只是引入了StudentMapper.java的一个对象。而StudentServiceImpl.java里面唯一有价值的东西,我觉得就是在StudentServiceImpl类上面加上了@Service注解,表明我这是一个服务层。
1.11 最后写控制层的东西,一共有四个:Header.java、StudentRequest.java、ResultData.java和StudentController.java。分开来说:
1.11.1 Header.java是个请求头,里面是接口调用者自己编的一些信息。
1.11.2 StudentRequest.java是客户端向服务端发送的请求,里面包含请求头Header对象和请求对象Student对象,意思就是,客户端像服务端递交了一份申请,上面写着:我叫XXX,请您赐给我一个Student对象吧。(卧槽,竟然要求别人赐给他一个对象,果然是单身狗!!)
1.11.3 ResultData.java是服务器端在接受了客户端的请求后返回给客户端的东西,里面包括三个内容:status、data、message。status表示服务器端处理客户端请求的状态,成功是1,不成功是0;data是服务器端返回给客户端的那个对象;message是服务器端要给客户端说的话。
1.11.4 StudentController.java就是把前面的StudentRequest.java和ResultData.java整合到了一起,起协调控制的作用,把客户端的请求发送给服务器,同时也接受服务器返回的信息。
【出现的问题(已解决)】
【出现的问题(未解决)】
1.出现了一个很奇怪的BUG,用jetty启动项目后,页面上一直显示:503错误,SERVICE_UNAVAILABLE。原因不明,当我把src/main/java下面的文件全部删掉,只留下一个用于测试的CurDateController.java类时,启动Jetty可以在页面上显示出当前时间,但是只要加上别的文件,就会报503错误。明天再解决。
【疑问】
1.当我用mvn jetty:run的命令启动jetty服务后,怎样停止呢,没办法输入命令了,我是直接ctrl+C取消命令停止的。
2.为什么不要用事务处理?我在网上没有找到有关禁用事务处理的文章,都是关于事务处理优点的。
3.为什么不要ResponseModels和requestModels这两个文件夹,而只用一个models文件夹?那Header.java、StudentRequest.java、ResultData.java这些类都放到models下吗?
评论