SpringMVC学习

SpringMVC学习

目录:

1、当出现项目与当前jdk版本不同时在Tomcat不能部署:

2、Eclipse导入包提示Setting build path has encountered a problem。

3、在Eclipse导入maven项目:

4、SpringMVC的注解使用:

5、handler method参数绑定常用的注解:

6、Pom.xml的作用:

7、Maven简介:

8、SpringMVC总体处理流程:


1、当出现项目与当前jdk版本不同时在Tomcat不能部署:

答:解决方法:

①右键项目,找到“properties”

②弹出的窗口中找到“Project Facets”

③找到Java,将版本修改为本地工程jdk版本

④重新将项目部署入tomcat服务器即可

问题扩展:同时可能回连带出现“Failed while changing version to java”的报错

解决方法:

是问题2的原因导致的。

 

2、Eclipse导入包提示Setting build path has encountered a problem。

答:解决方法:

原因有可能是因为.classpath文件为隐藏文件,修改其隐藏属性为可见即可。

 

3、在Eclipse导入maven项目:

答:操作过程:

①将工程项目复制你的工作空间目录(D:/workspace)

②进入eclipse页面,右键Import

③找到maven,选择Existing Maven Projects

④在root directory点击browse,进入工作空间目录,自动扫描,找到类似“/springmvc/pom.xml”的文件

⑤点击Finish

 

4、SpringMVC的注解使用:

答:(1)@Controller

控制器Controller负责处理由DispatcherServlet分发的请求,它把用户请求的数据经过业务处理层处理后封装成一个Model,然后再把该Model返回给对应的View进行展示。使用@RequestMapping和@RequestParam等一些注解用以定义URL请求和Controller方法之间的映射,这样的Controller就能被外界访问到。

@Controller 只是定义了一个控制器类,而使用@RequestMapping 注解的方法才是真正处理请求的处理器。

把一个控制器类交给Spring 来管理。有两种方式:
①在SpringMVC 的配置文件中定义MyController 的bean 对象。
②在SpringMVC 的配置文件中告诉Spring 该到哪里去找标记为@Controller 的Controller 控制器。

(2)@Autowired

@Autowired注解是按照类型(byType)装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它的required属性为false。如果我们想使用按照名称(byName)来装配,可以结合@Qualifier注解一起使用。

(3)@RequestMapping

用来定义访问的URL,你可以为整个类定义一个@RequestMapping,或者为每个方法指定一个。 把@RequestMapping放在类级别上,这可令它与方法级别上的@RequestMapping注解协同工作,取得缩小选择范围的效果。

完整的参数项为:

@RequestMapping(value="",method ={"",""},headers={},params={"",""})

value :String[] 指定请求的实际地址

method: RequestMethod[]指定请求的method类型,字符数组,查看RequestMethod类,包括GET, HEAD, POST, PUT, DELETE, OPTIONS, TRACE,常用RequestMethod.GET,RequestMethod.POST

headers:String[] 指定request中必须包含某些指定的header值,才能让该方法处理请求。headers一般结合method = RequestMethod.POST使用

params: String[] 指定request中必须包含某些参数值,才让该方法处理。字符数组 例如:userId=id

value的配置还可以采用模版变量的形式 ,例如:@RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)

(4)@ResponseBody

这个注解可以直接放在方法上,表示返回类型将会直接作为HTTP响应字节流输出(不被放置在Model,也不被拦截为视图页面名称)。可以用于ajax。

作用:该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

使用时机:返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;

(5)@RequestParam

主要用于在SpringMVC后台控制层获取参数,类似一种是request.getParameter("name"),它有三个常用参数:

defaultValue = "0", required = false, value = "isApp";

defaultValue 表示设置默认值,

required 通过boolean设置是否是必须要传入的参数,

value 值表示接受的传入的参数类型。

(6)@PathVariable

用于将请求URL中的模板变量映射到功能处理方法的参数上,即取出URI模板中的变量作为参数。

 @RequestMapping(value="/owners/{ownerId}", method=RequestMethod.GET)  

public String findOwner(@PathVariable String ownerId, Model model) {  

Owner owner = ownerService.findOwner(ownerId);      

model.addAttribute("owner", owner);    

return "displayOwner";  

}  

如果@RequestMapping没有定义类似"/{ownerId}"这种变量,则使用在方法中@PathVariable会报错。

(7)@CookieValue:

把Request header中关于cookie的值绑定到方法的参数上。

例如:@RequestMapping("/displayHeaderInfo.do")  

public void displayHeaderInfo(@CookieValue("JSESSIONID") String cookie)  {  }

(8)@RequestHeader :

把Request请求header部分的值绑定到方法的参数上。

例如:

这是一个Request的header部分:

Host                    localhost:8080  

Accept                  text/html,application/xhtml+xml,application/xml;q=0.9  

Accept-Language         fr,en-gb;q=0.7,en;q=0.3  

Accept-Encoding         gzip,deflate  

Accept-Charset          ISO-8859-1,utf-8;q=0.7,*;q=0.7  

Keep-Alive              300  

@RequestMapping("/displayHeaderInfo.do")  

public void displayHeaderInfo(@RequestHeader("Accept-Encoding") String encoding,  

@RequestHeader("Keep-Alive") long keepAlive)  {  }  

上面的代码,把request header部分的Accept-Encoding的值,绑定到参数encoding上了,Keep-Alive header的值绑定到参数keepAlive上。

 

5、handler method参数绑定常用的注解:

答:根据处理的Request的不同内容部分分为四类:

(1)处理requet uri部分(这里指uri template中variable,不含queryString部分)的注解:@PathVariable;

(2)处理request header部分的注解:@RequestHeader, @CookieValue;

(3)处理request body部分的注解:@RequestParam,  @RequestBody;

(4)处理attribute类型的注解:@SessionAttributes, @ModelAttribute;

 

6、Pom.xml的作用:

答:POM作为项目对象模型,它是工作在maven的基本单位。这是一个 XML 文件。它始终保存在该项目基本目录中的 pom.xml  文件。POM 包含的项目是使用 Maven 来构建的,以及它也包含各种配置信息。主要描述了项目:包括配置文件;开发者需要遵循的规则,缺陷管理系统,组织和licenses,项目的url,项目的依赖性,以及其他所有的项目相关因素。maven项目里面需要引入的jar包都在这里面配置,然后maven会自动下载这些依赖包。

 

7、Maven简介:

答:Maven是一个项目管理工具,它包含了一个项目对象模型(Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑。当你使用Maven的时候,你用一个明确定义的项目对象模型来描述你的项目,然后Maven可以应用横切的逻辑,这些逻辑来自一组共享的(或者自定义的)插件。

Maven 有一个生命周期,当你运行 mvn install 的时候被调用。这条命令告诉Maven执行一系列的有序的步骤,直到到达你指定的生命周期。遍历生命周期旅途中的一个影响就是,Maven运行了许多默认的插件目标,这些目标完成了像编译和创建一个JAR文件这样的工作。

此外,Maven能够很方便的帮你管理项目报告,生成站点,管理JAR文件,等等。

 

8、SpringMVC总体处理流程:

SpringMVC学习_第1张图片

图8.1 SpringMVC工作原理

(1)发起Http请求到前端控制器(DispatchServlet)

(2)前端控制器请求HandlerMapping查找Handler(通过xml配置、注释进行查找)

(3)处理器映射器(HandlerMapping)向前端控制器返回Handler

(4)前端控制器调用处理器适配器(HandlerAdapter)去执行Handler

(5)处理器适配器执行Handler

(6)Handler执行完给处理器适配器返回ModelAndView

(7)处理器适配器向前端控制器返回ModelAndView(ModelAndView是SpringMVC的底层对象,包括Model和View)

(8)前端控制器请求视图解析器(ViewResolver)进行视图解析,根据逻辑视图名解析为真正的视图

(9)视图解析器向前端控制器返回view

(10)前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域中

(11)前端控制器向用户响应结果


你可能感兴趣的:(Java,Web,spring,mvc,注解,maven)