spring mvc 第一天【注解实现springmvc的基本配置】

创建pojo,添加标识类的注解@Controller,亦可添加该Handler的命名空间:设置类的@RequestMapping(value="/hr")

该类中的方法(Handler)的标识使用@RequestMapping来配置 。可以设置该Handler的请求路径,和允许接收请求类型信息等;

该Handler返回String类型的逻辑视图名称。对应view视图信息。

 1 @Controller
 2 @RequestMapping
 3 public class MyController {
 4     @RequestMapping(value="/first.do",method=RequestMethod.POST)
 5     public String doFirst(UserInfo info,Model model) {
 6         System.out.println("uname"+info.getUname()+"\t"+info.getBooklist().get(0).getBookname());
 7         model.addAttribute("uname", info.getUname());
 8         return "index";
 9     }
10 }

使用注解配置Handler访问路径的通配符信息。更加便捷的访问Handler:

 1 @RequestMapping(value="/*third.do")// *代表0个或者多个字符,以third结尾就行
 2        public String doThird() {
 3            return "index";
 4        }
 5
 6    @RequestMapping(value="/fourth*.do")// *代表0个或者多个字符,以fourth开始就行
 7       public String doFourth() {
 8        System.out.println("fourth===============");
 9           return "index";
10       }
11
12    @RequestMapping(value="/**/fiveth.do")// **在hr和fiveth中间需要多级路径,或者没有路径均可访问
13       public String doFiveth() {
14           return "index";
15       }
16
17   @RequestMapping(value="/*/sixth*.do")// *在hr和sixth中间,必须书写一级路径,而且必须是一级
18      public String doSixth() {
19       System.out.println("sixth===============");
20          return "index";
21      }

配置注解一定要在配置文件中开启扫描器。

<context:component-scan base-package="cn.happy"></context:component-scan>

配置对应逻辑试图名称的视图解析器。

这里使用的是InternalResourceViewResolver    (访问站内资源)

1 <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
2         <property name="prefix" value="/WEB-INF/jsp/"></property>
3         <property name="suffix" value=".jsp"></property>
4     </bean>

上面的配置信息显示出在Controller中返回的视图皆为

/WEB-INF/jsp/*.jsp    其他的则访问不到,该写法有些死板,后面会说到全文通用的配法。

这里使用的是org.springframework.web.servlet.view.BeanNameViewResolver   配置视图解析器(第二种方案)org.springframework.web.servlet.view.RedirectView    (支持访问站外资源)
 1 <!-- 视图解析题 -->
 2        <bean class="org.springframework.web.servlet.view.BeanNameViewResolver"></bean>
 3
 4        <!-- 外部 -->
 5        <bean id="baidu" class="org.springframework.web.servlet.view.RedirectView">
 6            <property name="url" value="http://wwww.baidu.com"></property>
 7        </bean>
 8
 9       <!-- 内部 -->
10        <bean id="internal" class="org.springframework.web.servlet.view.JstlView">
11            <property name="url" value="WEB-INF/jsp/index.jsp"></property>
12        </bean>
13         <!-- 外部 -->
14        <bean id="baidu" class="org.springframework.web.servlet.view.XmlViewResolver">
15            <property name="location" value="classpath:MyView.xml"></property>
16        </bean>

比较复杂的视图解析器的配置:

 1          注册处理映射器
 2       <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
 3            <property name="mappings">
 4                <props>
 5                    <prop key="/happy.do">firstController</prop>
 6                </props>
 7            </property>
 8        </bean>
 9
10        注册处理映射器
11        <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
12            <property name="urlMap">
13                <map>
14                 <entry key="/hello.do" value="firstController"></entry>
15             </map>
16            </property>
17        </bean>
18        注册方法名解析器
19        <bean id="MymethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
20            <property name="mappings">
21                <props>
22                    <prop key="/first.do">doFirst</prop>
23                    <prop key="/second.do">doSecond</prop>
24                </props>
25            </property>
26        </bean>
27        <bean id="MymethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
28            <property name="paramName" value="actionName"></property>
29        </bean>

配置编码信息方式页面传递的信息出现乱码
CharacterEncodingFilter    通过配置forceEncoding属性为true设置request和response的编码格式皆为utf-8
 1   <!--编码过滤器  -->
 2   <filter>
 3     <filter-name>CharacterEncoding</filter-name>
 4     <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
 5     <init-param>
 6       <param-name>encoding</param-name>
 7       <param-value>utf-8</param-value>
 8     </init-param>
 9      <init-param>
10            <param-name>forceEncoding</param-name>
11            <param-value>true</param-value>
12      </init-param>
13   </filter>
14
15   <filter-mapping>
16        <filter-name>CharacterEncoding</filter-name>
17        <url-pattern>/*</url-pattern>
18   </filter-mapping>
配置springmvc核心过滤器    对所有相关.do的请求进行拦截
 1   <servlet>
 2     <servlet-name>springmvc</servlet-name>
 3     <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 4     <init-param>
 5       <param-name>contextConfigLocation</param-name>
 6       <param-value>classpath:applicationContext.xml</param-value>
 7     </init-param>
 8     <load-on-startup>1</load-on-startup>
 9   </servlet>
10   <servlet-mapping>
11     <servlet-name>springmvc</servlet-name>
12     <url-pattern>*.do</url-pattern>
13   </servlet-mapping>

在这里如果拦截的信息配置成为了 :“/*”    ,最好配置称为"/"

DispatcherServlet会将向动态页面请求,即向jsp页面的跳转请求也当做是一个普通的Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的。jsp页面会报404错误 结论:/*会拦截动态资源

配置该节点解决无法访问静态资源的问题:

<mvc:default-servlet-handler/>

或者是配置这一种:

<mvc:resources location="/images/" mapping="/images/**"></mvc:resources>

这一种:

时间: 2024-12-25 12:33:06

spring mvc 第一天【注解实现springmvc的基本配置】的相关文章

Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法

Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx":意思是返回到某个JSP页面上 如果想在此Action中跳转到另一个Action中怎样做呢? return "redirect://.do?" 例如: @RequestMapping(params = "action=delete") public String del

Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) ----DawnHeaven

Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker)       ------DawnHeaven 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomcat 4.Maven  maven安装指南 二.构建工程 1.file->new->Project 2.next 3. next 4.next 5.finish 工程目录如下 三.完善项目 首先,完善目录,增加重要的source Folder,这个不是

Spring MVC入门第4天--springmvc高级功能

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.07.05 lutianfei none 异常处理 异常处理思路 系统中异常包括两类:预期异常和运行时异常RuntimeException,前者通过捕获异常从而获取异常信息,后者主要通过规范代码开发.测试通过手段减少运行时异常的发生. 系统的dao.service.controller出现都通过throws Exception向上抛出,最后由springmvc前端控制器交由异常处理器进行异常处理,如下图: spring

Spring MVC的常用注解

1.@Controller 控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层处理之后封装成一个Model ,然后再把该Model 返回给对应的View 进行展示. @COntroller用于标记一个类,即控制类,spring使用扫描机制查找应用程序中所有基于注解的控制类.分发处理器会扫描使用了该注解的类的方法,并检测该方法是否使用了@RequestMapping注解,而使用@RequestMapping注解的方法才是真正处理请

四、Spring MVC的RequestParam注解

前面的章节,有提到可以通过@PathVariable注解来映射restful风格的url中的值到方法中去,本章就看看如果不使用restful风格的url来怎么进行参数的传递. RequestParam就是来实现参数传递的,能够把用户的输入绑定到后台的方法上面.它有三个主要的属性: value:定义参数的名称 required:定义参数是否是必须的,默认是true defaultValue:定义参数的默认值 下面结合具体的示例代码来看一下如何使用: 1.下面的这段代码定义了三个参数,一个name,

Spring MVC中基于注解的 Controller

终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求.实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPathMethodNameResolver) 就已经可以在很大程度上帮助我们省去不少的 XML 配置,谁让

Spring MVC常用的注解类

一.注解类配置 要使用springmvc的注解类,需要在springmvc.xml配置文件中用context:component-scan/扫描: ? 二.五大重要的注解类 1.RequestMapping注解 RequestMapping注解类的使用方法 在Controller控制器类的类定义和方法定义处都可以标注@RequestMapping注解 DispatcherServlet截获请求后,就可以通过控制器上的@RequestMapping提供的映射信息确定请求所对应的处理方法 packa

spring MVC 第一课 概念

1.起源.背景 Spring是一个开源框架,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架. Spring致力于提供一种方法管理你的业务对象.Spring是全面的和模块化的.Spring有分层的体系结构,这意味着你能选择使用它孤立的任何部分,它的架构仍然是内在稳定的.因例如,你可能选择仅仅使用Spring来简单化JDBC的使用,或用来管理所有的业务对象. 它的设计从底部帮助你编写易于测试的代码.Spring是用于测试驱动工程的理想的framework.

Spring MVC如何测试Controller(使用springmvc mock测试)

在springmvc中一般的测试用例都是测试service层,今天我来演示下如何使用springmvc mock直接测试controller层代码. 1.什么是mock测试? mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法. 2.为什么要使用mock测试? 使用Mock Object进行测试,主要是用来模拟那些在应用中不容易构造(如HttpServletRequest必须在Servlet容器中才能构造出来)或者比较复杂的对象(如JD

Spring MVC拦截器+注解方式实现防止表单重复提交

原理:在新建页面中Session保存token随机码,当保存时验证,通过后删除,当再次点击保存时由于服务器端的Session中已经不存在了,所有无法验证通过. 注,如果是集群的方式,则需要将token放入到缓存中即可. 注解Token代码:java源码  Java代码 复制代码 收藏代码 1[email protected](ElementType.METHOD) 2[email protected] (RetentionPolicy.RUNTIME) 3.public @interface T