spring mvc 第一天【注解实现springmvc的基本配置】
创建pojo,添加标识类的注解@Controller,亦可添加该Handler的命名空间:设置类的@RequestMapping(value="/hr")
该类中的方法(Handler)的标识使用@RequestMapping来配置 。可以设置该Handler的请求路径,和允许接收请求类型信息等;
该Handler返回String类型的逻辑视图名称。对应view视图信息。
@Controller
@RequestMapping
public class MyController {
@RequestMapping(value="/first.do",method=RequestMethod.POST)
public String doFirst(UserInfo info,Model model) {
System.out.println("uname"+info.getUname()+"\t"+info.getBooklist().get(0).getBookname());
model.addAttribute("uname", info.getUname());
return "index";
}
}
使用注解配置Handler访问路径的通配符信息。更加便捷的访问Handler:
@RequestMapping(value="/*third.do")// *代表0个或者多个字符,以third结尾就行
public String doThird() {
return "index";
} @RequestMapping(value="/fourth*.do")// *代表0个或者多个字符,以fourth开始就行
public String doFourth() {
System.out.println("fourth===============");
return "index";
} @RequestMapping(value="/**/fiveth.do")// **在hr和fiveth中间需要多级路径,或者没有路径均可访问
public String doFiveth() {
return "index";
} @RequestMapping(value="/*/sixth*.do")// *在hr和sixth中间,必须书写一级路径,而且必须是一级
public String doSixth() {
System.out.println("sixth===============");
return "index";
}
配置注解一定要在配置文件中开启扫描器。
<context:component-scan base-package="cn.happy"></context:component-scan>
配置对应逻辑试图名称的视图解析器。
这里使用的是InternalResourceViewResolver (访问站内资源)
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
上面的配置信息显示出在Controller中返回的视图皆为
/WEB-INF/jsp/*.jsp 其他的则访问不到,该写法有些死板,后面会说到全文通用的配法。 这里使用的是org.springframework.web.servlet.view.BeanNameViewResolver 配置视图解析器(第二种方案)
org.springframework.web.servlet.view.RedirectView (支持访问站外资源)
<!-- 视图解析题 -->
<bean class="org.springframework.web.servlet.view.BeanNameViewResolver"></bean> <!-- 外部 -->
<bean id="baidu" class="org.springframework.web.servlet.view.RedirectView">
<property name="url" value="http://wwww.baidu.com"></property>
</bean> <!-- 内部 -->
<bean id="internal" class="org.springframework.web.servlet.view.JstlView">
<property name="url" value="WEB-INF/jsp/index.jsp"></property>
</bean>
<!-- 外部 -->
<bean id="baidu" class="org.springframework.web.servlet.view.XmlViewResolver">
<property name="location" value="classpath:MyView.xml"></property>
</bean>
比较复杂的视图解析器的配置:
注册处理映射器
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings">
<props>
<prop key="/happy.do">firstController</prop>
</props>
</property>
</bean> 注册处理映射器
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="urlMap">
<map>
<entry key="/hello.do" value="firstController"></entry>
</map>
</property>
</bean>
注册方法名解析器
<bean id="MymethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.PropertiesMethodNameResolver">
<property name="mappings">
<props>
<prop key="/first.do">doFirst</prop>
<prop key="/second.do">doSecond</prop>
</props>
</property>
</bean>
<bean id="MymethodNameResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver">
<property name="paramName" value="actionName"></property>
</bean>
配置编码信息方式页面传递的信息出现乱码
CharacterEncodingFilter 通过配置forceEncoding属性为true设置request和response的编码格式皆为utf-8
<!--编码过滤器 -->
<filter>
<filter-name>CharacterEncoding</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter> <filter-mapping>
<filter-name>CharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
配置springmvc核心过滤器 对所有相关.do的请求进行拦截
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
在这里如果拦截的信息配置成为了 :“/*” ,最好配置称为"/"
DispatcherServlet会将向动态页面请求,即向jsp页面的跳转请求也当做是一个普通的Controller请求。中央调度器会调用处理器映射器为其查找相应的处理器。当然是找不到的。jsp页面会报404错误 结论:/*会拦截动态资源
配置该节点解决无法访问静态资源的问题:
<mvc:default-servlet-handler/>
或者是配置这一种:
<mvc:resources location="/images/" mapping="/images/**"></mvc:resources>
这一种:
spring mvc 第一天【注解实现springmvc的基本配置】的更多相关文章
- Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker)
Spring MVC 环境搭建(maven+SpringMVC+mybatis+Freemarker) 一.准备工作 1.Eclipse Java EE IDE(4.4.1) 2.JDK 3.Tomc ...
- Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法
Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法 在Action中方法的返回值都是字符串行,一般情况是返回某个JSP,如: return "xx" ...
- 0001 - Spring MVC中的注解
1.概述 Spring MVC框架提供了功能强大的注解,大大简化了代码开发的同时也提升了程序的可扩展性 2.注解 2.1.@RequestMapping Spring MVC通过@RequestMap ...
- Spring MVC 中 @ModelAttribute 注解的妙用
Spring MVC 中 @ModelAttribute 注解的妙用 Spring MVC 提供的这种基于注释的编程模型,极大的简化了 web 应用的开发.其中 @Controller 和 @Rest ...
- spring 以及 spring mvc 中常用注解整理
spring 以及 spring mvc 中常用注解整理 @RequestMapping(映射路径) @Autowired(注入 bean 对象) 例如: @Autowired private Bas ...
- Spring MVC中@RequestMapping注解使用技巧(转)
@RequestMapping是Spring Web应用程序中最常被用到的注解之一.这个注解会将HTTP请求映射到MVC和REST控制器的处理方法上. 在这篇文章中,你将会看到@RequestMapp ...
- 2017.3.31 spring mvc教程(二)核心流程及配置详解
学习的博客:http://elf8848.iteye.com/blog/875830/ 我项目中所用的版本:4.2.0.博客的时间比较早,11年的,学习的是Spring3 MVC.不知道版本上有没有变 ...
- Spring MVC常用的注解类
一.注解类配置 要使用springmvc的注解类,需要在springmvc.xml配置文件中用context:component-scan/扫描:  二.五大重要的注解类 1.RequestMapp ...
- Spring MVC中基于注解的 Controller
终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响 ...
- Spring MVC如何测试Controller(使用springmvc mock测试)
在springmvc中一般的测试用例都是测试service层,今天我来演示下如何使用springmvc mock直接测试controller层代码. 1.什么是mock测试? mock测试就是在测试过 ...
随机推荐
- windows apache24 php Call to undefined function curl_init
check dll files in dir: Apache24/bin libssh2.dll, ssleay32.dll, libeay32.dll http://nz.php.net/manua ...
- jenkins中submodule的使用
尝试过各种插件配置都不行. 最后只好通过命令来更新Submodule了. 首先把Git更新到最新,为什么要更新等会儿再说. 项目里的Submodule要配置好,这是基本的. (检查是否配置好的方法: ...
- C语音常用库和函数
#include <assert.h> //设定插入点 #include <ctype.h> //字符处理 #include <errno.h> //定义错误码 # ...
- vmware 修改IP 提示子网掩码错误~
我打开[编辑]->[虚拟网络编辑器]菜单 修改网络设置 提示 子网掩码错误 如下图所示 上网查询,使用如下方法解决问题 这个虚拟网络编辑器是给你添加网卡的,你添加vmnet1就是在你真实的电脑上 ...
- Python体验(09)-图形界面之Pannel和Sizer
import wx class Form(wx.Frame): def __init__(self,parent,ID,title): wx.Frame.__init__(self,parent,ID ...
- LoadRunner测试结果分析01 转载至zhangzhe的新浪博客
LoadRunner测试结果分析之我见 LoadRunner生成测试结果并不代表着这次测试结果的结束,相反,这次测试结果的重头戏才刚刚开始.如何对测试结果进行分析,关系着这次测试的成功与否.网上关于L ...
- 使用yum安装应用程序时候,报错:[Errno 14] PYCURL ERROR 7 - "Failed to connect to 2001:da8:8000:6023::230: 网络不可达"
使用yum安装应用程序时候,报错:[Errno 14] PYCURL ERROR 7 - "Failed to connect to 2001:da8:8000:6023::230: 网络不 ...
- 用adox 取 access 自增列
百度很久 最后在 (.NET2.0下用ADOX动态创建ACCESS数据库(C#)) http://blog.csdn.net/black4371/article/details/4423739 找到了 ...
- 老生长谈,温故知新:css实现右侧固定宽度,左侧宽度自适应
反过来也可以:左侧宽度固定,右侧自适应.不管是左是右,反正就是一边宽度固定,一边宽度自适应. 这种布局比较常见,博客园很多默认主题就是这种.一般情况下,这种布局中宽度固定的区域是侧边栏,而自适应的区域 ...
- mac上用teamviewer远程windows输入问题
问题: 在mac上用teamviewer远程windows时,碰到shift,=等按键无效的问题. 解决办法: 远程桌面连接服务器时,键盘不能正常打字.此时把windows自带的小键盘打开后,此时再用 ...