1. springmvc中如何执行到方法的
spring 是在配置的bean里面的属性,中依赖注入的,调用set方法。
2. 什么是springmvc
SpringMvc是spring的一个模块 基于MVC的一个框架 无需中间整合层来整合
什么是MVC ?mvc在b/s下的应用:
首先请求发送request请求到C(control 接收用户请求响应用户) 然后控制器到M模型(pojo、action、service、)层处理 处理结果完了返回控制器 控制器要经过视图渲染 最后返回终端(response)
在b/s系统下模型无法将数据直接填充到视图 还是要返回控制器
MVC是一个设计模式 是开发程序的一种解决方案
前端控制器 DispatcherServlet
处理执行链HandlerExcutionChian
处理器映射器 HandlerMapping
处理器适配器 HandlerAdapter 去执行Handler
前端控制器 DispatcherServlet 请求执行Handler 处理完 返回 ModelAndView (模型和视图的结合体) 前端控制器接收到ModelAndView后请求视图解析器 返回view 前端控制器将视图进行渲染
SpringMvc整个的执行流程:
1、发起请求到前端控制器(DispatcherServlet)
2、前端控制器请求HandlerMapping查找Handler(可以根据xml、注解进行查找)
3、处理器映射器HandlerMapping向前端控制器DispatcherServlet返回Handler
4、前端控制器DispatcherServlet 调用处理器适配器HandlerAdapter 执行Handler
5、处理器适配器HandlerAdapter 执行Handler
6、Handler执行完给处理器适配器返回ModelAndView
7、处理器适配器向前端控制器返回ModelAndView (ModelAndView 是SpringMvc的底层对象 包括model和view)
8、前端控制器请求视图解析器去解析视图
根据逻辑视图名解析成真正的视图(jsp)
9、视图解析器向前端控制器返回view
10、前端控制器进行视图渲染
视图渲染将模型数据(模型数据在ModelAndView对象中)填充到request域
11、前端控制器向用户响应结果
组件:
1、前端控制器 DispatcherServlet(不需要程序员开发)
作用:接收请求、响应结果 相当于转发器
有了DispatcherServlet 就减少了其它组件之间的耦合度
2、处理器映射器HandlerMapping(不需要程序员开发)
作用:根据请求的URL来查找Handler
3、处理器适配器HandlerAdapter
作用:按照特定的规则(HandlerAdapter要求的规则)去执行Handler
注意:在编写Handler的时候要按照HandlerAdapter要求的规则去编写,这样适配器HandlerAdapter才可以正确的去执行Handler
4、处理器Handler(需要程序员开发)
5、视图解析器 View Resolver(不需要程序员开发)
作用:进行视图的解析 根据视图逻辑名解析成真正的视图(view)
6、视图View(需要程序员开发jsp)
View是一个接口, 它的实现类支持不同的视图类型(jsp,freemarker,pdf。。。)
3. springmvc开发的文件怎么运行
使用springMVC也可以代替struts2,当然只是代替业务分发的功能,struts2的一些其他功能它是没有的,不然要struts2有什么用。
下面我用springMVC代替struts2去整合hibernate实现简单的员工查询功能。
使用springMVC有两个配置文件需要配置,一个是applicationContext.xml、另一个是web.xml,在applicationContext.xml里面配置事务管理器以及属性注入等。web.xml里面要添加一个springMVC的servlet的注册和映射(DispatcherServlet),这个servlet是springMVC的核心控制器,专门处理各个请求的,然后根据相应的参数分发给相应的业务控制器处理,业务控制器处理完之后就会返回一字符串给核心控制器,核心控制器再根据该字符串重定向或者转发到相应的页面。还必须给该核心控制器建一个配置文件,其形式为:核心控制器servlet名-servlet.xml,如springMVC-servlet.xml.该配置文件放在WEB-INF下面。
applicationContext.xml的内容如下:
4. Spring MVC如何执行一个Controller之后5分钟后执行另一个方法
return "xxx"
xxx代表你访问的Controller 路径
5. spring springmvc mybaties怎样tomcat一启动就执行一个方法
spring配置文件中,为某个对象定义加上init-method="XXX"(作为bean节点的属性),其中XXX就是需要执行的方法名,该方法没有参数。
如果需要参数的话,就要用变通的方式,定义一个类,需要的参数作为属性传递给该类,然后定义一个没有参数的方法,使用那些属性。
最后在spring配置中按上述的方式定义init-method
6. springmvc怎么通过拦截器得到执行的方法
呃··回答错地方了 在web.xml配置 spring org.springframework.web.servlet.DispatcherServlet 1 spring *.do ------------------------------------------- spring-servlet.xml 的配置扫包,自动匹配你的方法
7. springmvc 如何在java代码中发送请求到一个controller,执行controller方法
这样是没有意义的,controller可以执行但是你里面的httpservletrequest是空的并且无法返回到页面因为java程序不会主动回应只有前端访问了才会返回
8. springmvc ctrl 方法执行前统一执行一个自定义方法,并且接受的参数与具体要执行的方法样
还是不太明白 大致上 当你执行ctrl 方法时候 就调用 一下 你的自定义方法就可以了 如果是参数的话 可以 通过JSON 传入多个 比如 在一个JSON串中拼接 一个类名 和方法名 然后 在 controller 拿到JSON 从 JSON 拿到 类名 与方法名 获得实际类与方法的代码如下:
packagetest;
importjava.lang.reflect.Method;
publicclassTest{
//获得类和方法
publicstaticvoidmain(String[]args)throwsException{
//类名
StringclassName="test.test1";
//方法名
StringmethodName="sayHello";
//加载类
Classclz=Class.forName(className);
//获得类
Objectobj=clz.newInstance();
//获取方法那个String.class就是参数类型
Methodm=obj.getClass().getDeclaredMethod(methodName,String.class);
//调用方法
Stringresult=(String)m.invoke(obj,"aaa");
System.out.println(result);
}
}
//测试类
packagetest;
publicclasstest1{
publicStringsayHello(Strings){
System.out.println(s);
return"hello!";
}
}
/**以下是输出结果
aaa
hello!
*/
总的来讲 就是通过 反射机制 具体 怎么实现 还得看自己 我这只是个例子
9. 在springMVC中,怎么根据参数来调用不同的方法!但是,不是用if...else...!!!
在方法上添加@RequestMapping注解
例:@RequestMapping(params={"method=login"})
10. springmvc怎么在启动时自己执行一个线程
调用线程跟spring mvc没有任何关系,只要调用start()方法即可启动线程,至于线程安全问题,如果线程run()方法中没有对于数据库的修改操作的话,无需考虑这点