发表于: 2019-04-09 21:35:49
2 544
任务2:创建WEB工程,提供Rest风格数据接口。
今天完成的事情:今天修改了自己的接口文档,因为接口文档有许多错误,师兄给我指出。
还是自己了解了太浅显,根本没有学会RESTful风格的接口文档,例如:创建时间和更新时间并不能由前端传入,而是前端传入插入的必须数据后我们给他获得,因为为了防止有人恶意篡改利用系统bug,还有就是学号不能设置为手动插入,因为如果插入的话还需要判断是否重复,前端也不知道已经存在哪些学号,所以解决办法就是根据插入的id先提交一次,然后利用拼接,给字段加前缀,在提交一次。还有返回的问题,我们要尽可能的返回给前端错误代码,告诉他们成功或者失败的具体信息。这也是必要的。还有就是需要做一个分页查询的功能,大概构想是根据查询的id返回数据在表中的某一位。一页大概放10-20条数据。
然后今天还写完了controller层,并且返回了jsp
但是自己实现不规范,规定是创建一个maven web工程,我创建的是spring mvc后面还需要在重新做一遍
spring mvc主要功能就是设计接口提供给其他应用程序访问。如前端客户端等,Controller 负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model,然后再把该Model返回给对应的View进行展示。只需使用@Controller标记一个类是Controller,然后使用@RequestMapping和@RequestParam等一些注解用以定义URL请求和Controller方法之间的映射,这样的Controller就能被外界访问到。此外Controller不会直接依赖于HttpServletRequest和HttpServletResponse等HttpServlet对象,它们可以通过Controller的方法参数灵活的获取到。
package com.springmvc.controller;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("hi")
public class helloWorld {
@RequestMapping("hello")
public String say(ModelMap model){
model.addAttribute("message","hello world");
return "/hello";
}
}
@Controller是标记在类MyController上面的,所以类MyController 就是一个SpringMVC Controller对象了,然后使用@RequestMapping(“/hi”)标记在Controller方法上,表示当请求/hi的时候访问的是MyController的helloWorld方法,该方法返回了一个包括message的gello world对象。
但是这样还不能成为控制器类,因为spring框架还不认识。这个时候就需要我们把这个控制器类交给Spring 来管理,这个时候有两种方式可以把MyController 交给Spring 管理,好让它能够识别我们标记的@Controller。
第一种方式是在SpringMVC 的配置文件中定义MyController 的bean 对象。
<bean class="com.host.app.web.controller.MyController"/>
第二种方式是在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller控制器。
我选择的是在配置文件中添加dispacher-servlet.xml注入
<context:component-scan base-package="com.springmvc.controller"/>
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
</bean>
</beans>
三、使用 @RequestMapping 来映射 Request 请求与处理器
可以使用@RequestMapping来映射URL到控制器类,或者是到Controller控制器的处理方法上。当@RequestMapping 标记在Controller类上的时候,里面使用@RequestMapping标记的方法的请求地址都是相对于类上的@RequestMapping而言的;当Controller类上没有标记@RequestMapping注解时,方法上的@RequestMapping都是绝对路径。这种绝对路径和相对路径所组合成的最终路径都是相对于根路径“/”而言的。
最后就是写出jsp文件
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${message}
</body>
</html>
在网页打印出message信息就呈现出网页了。
然后需要配置tomcat,之所以web网页404就是因为tomcat配置不正确所以暂时选择的spring mvc
如图是tomcat配置,在server配置完毕,还需要在deployment中添加source。
明天计划的事情:本地运行Jetty:run 插件,修改端口号为8080,浏览器访问任意查询接口,判断是否可以正确返回数据
遇到的问题:明明程序没有错误却一直报8080端口已经被使用的错误,这是因为tomcat本身使用的8080端口,可能需要改端口或者直接在tomcat目录下进入bin文件夹,运行shutdown.bat即可。
收获:运行起了第一个web工程,需要继续深入了解。
评论