【spring】spring MVC入门
来源:互联网 发布:淘宝二手相机靠谱吗 编辑:程序博客网 时间:2024/06/02 08:14
【spring】spring MVC入门
spring mvc框架是一个web服务端开发框架
基于spring mvc框架进行开发,能够让我们脱离对底层代码实现的开发
让我们更加的专注于业务逻辑代码的开发,大大提高web服务开发的效率
spring mvc总体上分为三块:
controller模块:这个模块主要是获取用户请求,进行判断处理,然后返回数据
model模块:业务逻辑模块,包括业务数据的存储等操作和业务逻辑的操作
view模块:视图模块,主要是完成页面设计
interceptor模块:拦截器模块,这个模块可以进行对请求与响应的简单处理
DispatcherServlet
用户发送url请求,都会由 dispatcherServlet 进行处理,由它来进行选择相对应的 controller 进行处理
在servlet-mapping 中定义了,所有的.do结尾的请求均会由 dispatcherServlet 处理
// 配置文件 web.xml <servlet> <servlet-name >dispatcherServlet</ servlet-name> <servlet-class > org.springframework.web.servlet.DispatcherServlet </servlet-class > <init-param > <param-name> contextConfigLocation</param-name > <param-value> /WEB-INF/mymvc.xml</param-value > </init-param > <load-on-startup >1</ load-on-startup> </servlet > <servlet-mapping > <servlet-name >dispatcherServlet</ servlet-name> <url-pattern >*.do</ url-pattern> </servlet-mapping >
在spring mvc中,需要实现 controller 接口,因为 DispatcherServlet 会选择合适的controller来进行请求的处理
controller 接收到请求后,会调用handleRequest 方法进行处理,因此,我们需要实现该方法
public class HelloController implements Controller{ private String view; @Override public ModelAndView handleRequest(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { String hi = arg0.getParameter("test"); // 返回一个 ModelAndView 对象,该对象包含了view页面路径信息和model数据等 // 这个 ModelAndView 对象的解析将会由 spring mvc 中viewResolver进行解析处理 return new ModelAndView(view, "test" , hi); } public void setView(String view) { this.view = view; }}
要实现web服务,则还需要在mymvc.xml 配置文件中定义好需要使用的bean
spring mvc 有相关的视图解析类
例子中用的解析类为viewResolver ,其对应是spring的InternalResourceViewResolver 类
解析结果为:是在/views/目录下的后缀名为.jsp的jsp文件
解析完成后会由InternalResourceViewResolver 进行页面的渲染
<bean id= "viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" > <property name="prefix" value="/views/"></ property> <property name="suffix" value=".jsp"></ property> </bean><!-- 拦截器,能够在controller等执行前后进行一些操作 本例中,主要是在controller执行前后进行日志的打印 --> <bean id= "loggingInterceptor" class="com.ming.sns.spring.LoggingInterceptor" > </bean><!-- dispatcherServlet是根据handlerMapping实例进行判断选择合适的controller 本例中使用的 handlerMapping对象为spring中的ControllerClassNameHandlerMapping类 该类的使用需要controller类的定义符合命名规范,如hello*的请求会寻找helloController进行处理 --> <bean id= "controllerClassNameHandlerMapping" class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping" > <!-- 在handlerMapping中引用拦截器,则实现拦截处理的功能 --> <property name="interceptors" > <list> <ref bean="loggingInterceptor" /> </list> </property> </bean> <!-- 定义controller处理bean --> <bean name="helloController" class="com.ming.sns.spring.HelloController" > <property name="view" value="hello"></ property> </bean>// 拦截器的实现类public class LoggingInterceptor extends HandlerInterceptorAdapter{ private Logger logger = Logger.getLogger( this.getClass().getName()); @Override public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception { // TODO Auto-generated method stub logger.info(handler.getClass().getName() + " job start..."); return true ; } @Override public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception { // TODO Auto-generated method stub logger.info(handler.getClass().getName() + " job over..."); //super.postHandle(request, response, handler, modelAndView); } @Override public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception { // TODO Auto-generated method stub logger.info(handler.getClass().getName() + " view render over..."); //super.afterCompletion(request, response, handler, ex); }}
http://localhost:8080/myspring/hello.do?test=helloworld输入地址后页面会显示 helloworld控制台会输出2012-10-06 14:44:31,087 INFO [com.ming.sns.spring.LoggingInterceptor] - com.ming.sns.spring.HelloController job start...2012-10-06 14:44:31,087 INFO [com.ming.sns.spring.LoggingInterceptor] - com.ming.sns.spring.HelloController job over...2012-10-06 14:44:31,087 INFO [com.ming.sns.spring.LoggingInterceptor] - com.ming.sns.spring.HelloController view render over...
- 【spring】spring MVC入门
- 【Spring】Spring MVC入门
- Spring MVC 入门
- Spring MVC入门
- Spring MVC 入门
- spring mvc入门
- spring mvc入门
- Spring MVC 入门
- 入门spring MVC
- Spring MVC 入门
- Spring MVC 入门 @ MultiActionController
- spring mvc入门
- Spring MVC入门
- Spring MVC 入门
- Spring MVC 入门
- Spring MVC 入门
- Spring mvc 入门
- Spring MVC 入门
- hdu~1698~线段树
- wait、sleep、notify、notifyAll的区别
- 获得地址栏URL
- 关于SAD,SAE,SATD,SSD,SSE,MAD,MAE,MSD,MSE
- 转载加自己的见解 之从编译器角度分析C语言中数组名和指针的区别
- 【spring】spring MVC入门
- JAVA对文件类型的校验 .
- CMS之图片管理(1)
- 获得当前网卡MAC
- 网易笔试题(java 、 c++ 、软件测试等)
- Ubuntu使用FAQ
- Matlab 基本命令、快捷键及常用操作
- STM32F0之SPI(使用固件库)
- asp.net中使用Dataset导出数据到xml或者xls