springmvc(3)注解
有疑问可以参考博主其他关于spring mvc的博文
此时直接进行代码的实现
一般的步骤:
-加入jar包
-配置DispatcherServlet
-加入Spring MVC配置文件
-编写请求的处理器
-视图
创建web工程:
加入jar包
web.xml文件
<!-- 配置DispatcherServlet -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 配置初始化参数 -->
<!-- 配置 DispatcherServlet 的一个初始化参数: 配置 SpringMVC 配置文件的位置和名称 -->
<!--
实际上也可以不通过 contextConfigLocation 来配置 SpringMVC 的配置文件, 而使用默认的.
默认的配置文件为: /WEB-INF/<servlet-name>-servlet.xml
简单的列子:在WEB-INF文件夹下springDispatcherServlet-servlet.xml,init就不需要在配置了
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup></load-on-startup>
</servlet> <servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
springmvc.xml以及所需要的类
springmvc.xml
<!-- 配置自动扫描的包 -->
<context:component-scan base-package="com.MrChengs.A"></context:component-scan>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
HelloWord.java
//自动扫描
@Controller
public class HelloWord {
//返回值通过视图解析器解析为实际的物理逻辑视图,InternalResourceViewResolver解析器
//<property name="prefix" value="/WEB-INF/views/"></property>
//<property name="suffix" value=".jsp"></property>
//通过前缀 prefix + 返回值 + 后缀
// == /WEB-INF/views/ + success + .jsp //使用注解来映射请求url
@RequestMapping("/helloword")
public String say(){
System.out.println("hello");
return "success";
}
}
这里说明需要在路径下建立相关的 文件以及路径:
<body>
<h4>success</h4>
</body>
在index.jsp
<body>
<a href="helloword">helloword</a>
</body>
得到:注意看请求的url
@Controller
@RequestMapping("/springmvc")
public class TestRequestMapping { @RequestMapping("/RequestMapping")
public String RequestMapping(){
System.out.println("RequestMapping");
return "success";
}
}
在index,jsp中:
<a href="springmvc/RequestMapping">testMethod</a>
在运行之后点击超链接,控制台会显示,主要看路径:
具体可看图的解释:
@RequestMapping(value="/RequestMethod",method=org.springframework.web.bind.annotation.RequestMethod.POST)
public String RequestMethod(){
System.out.println("RequestMethod");
return "success";
}
index.jsp中:
<form action="springmvc/RequestMethod" method="post">
<input type="submit" value="submit">
</form>
params
@RequestMapping(value="/paramsAndHeaders",
params={"user","age!=20"})
public String ParamesHeaders(){
return "success";
}
index.jsp
<a href="springmvc/paramsAndHeaders">paramsAndHeaders</a>
header:
@RequestMapping("/antpath/*/ant")
public String AntPath(){
return "success";
}
index.jsp:
<a href="springmvc/antpath/mvcmmc/ant">Ant</a>
TestRequestMapping.java
@RequestMapping("/testPathVariable/{id}")
public String testPathVariable(@PathVariable(value="id") int id){
System.out.println("testPathVariable:" + id);
return "success";
}
index.jsp
<a href="springmvc/testPathVariable/20">testPathVariable</a>
需要在web.xml配置:
<!-- 配置org.springframework.web.filter.HiddenHttpMethodFilter.class -->
<!-- 可以把POST请求转为delete/post -->
<filter>
<filter-name>filter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>filter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
java类中:
@RequestMapping(value="/test/{id}",method=org.springframework.web.bind.annotation.RequestMethod.GET)
public String testGet(@PathVariable(value="id") int id){
System.out.println("GET:" + id);
return "success";
} @RequestMapping(value="/test",method=org.springframework.web.bind.annotation.RequestMethod.POST)
public String testPOST(){
System.out.println("POST:");
return "success";
} @RequestMapping(value="/test/{id}",method=org.springframework.web.bind.annotation.RequestMethod.DELETE)
public String testDelete(@PathVariable(value="id") int id){
System.out.println("DELETE:" + id);
return "success";
} @RequestMapping(value="/test/{id}",method=org.springframework.web.bind.annotation.RequestMethod.PUT)
public String testPUT(@PathVariable(value="id") int id){
System.out.println("PUT:" + id);
return "success";
}
index.jsp
<a href="springmvc/test/1">GET</a>
<br>
<form action="springmvc/test" method="post">
<input type="submit" value="POST">
</form>
<br>
<form action="springmvc/test/1" method="post">
<input type="hidden" name="_method" value="DELETE">
<input type="submit" value="DELETE">
</form>
<br>
<form action="springmvc/test/1" method="post">
<input type="hidden" name="_method" value="PUT">
<input type="submit" value="PUT">
</form>
@RequestMapping("/testRequestParam")
public String testRequestParam(@RequestParam(value="username",required=false) String username,
@RequestParam(value="age") int age){
System.out.println("username:" + username + "--age:" + age);
return "success";
}
index.jsp
<a href="springmvc/testRequestParam?username=MrChang&age=22">testRequestParam</a>
@RequestMapping("/RequestHeader")
public String testRequestHeader(@RequestHeader(value="Accept")String l){
System.out.println(l);
return "success";
}
index.jsp
<a href="springmvc/RequestHeader">RequestHeader</a>
TestRequestMapping.java
@RequestMapping("/testpojo")
public String testtestpojo(User user){
System.out.println(user);
return "success";
}
User.java
public class User {
private String username;
private String password;
private String email; private Address address;
}
Address.java
public class Address {
private String city;
}
index.java
<form action="springmvc/testpojo" method="post">
username:<input type="text" name="username">
<br>
password:<input type="password" name="password">
<br>
email:<input type="text" name="email">
<br>
city:<input type="text" name="address.city">
<input type="submit" value="submit">
</form>
使用 Servlet API 作为
TestRequestMapping.java
@RequestMapping("/testServletAPI")
public String testServletAPI(HttpServletRequest request,
HttpServletResponse response){
System.out.println("request:" + request + "-response:" + response);
return "success";
}
<a href="springmvc/testServletAPI">testServletAPI</a>
request:org.apache.catalina.connector.RequestFacade@7a434d60-
response:org.apache.catalina.connector.ResponseFacade@addea0e
springmvc(3)注解的更多相关文章
- SpringMVC常用注解實例詳解3:@ResponseBody
我的開發環境框架: springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...
- SpringMVC常用注解實例詳解2:@ModelAttribute
我的開發環境框架: springmvc+spring+freemarker開發工具: springsource-tool-suite-2.9.0JDK版本: 1.6.0_29tomcat ...
- springMVC的注解详解
springmvc常用注解标签详解 1.@Controller 在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业 ...
- springmvc常用注解与类型转换
springmvc常用注解与类型转换 一:前置 spring -servlet.xml 注入 <!-- 启用spring mvc 注解 --> <context:annotation ...
- springMvc的注解注入方式
springMvc的注解注入方式 最近在看springMvc的源码,看到了该框架的注入注解的部分觉的有点吃力,可能还是对注解的方面的知识还认识的不够深刻,所以特意去学习注解方面的知识.由于本人也是抱着 ...
- SpringMVC全注解
SpringMVC全注解不是你们那么玩的 前言:忙了段时间,忙得要死要活,累了一段时间,累得死去活来. 偶尔看到很多零注解配置SpringMVC,其实没有根本的零注解. 1)工程图一张: web.xm ...
- SpringMVC常用注解@Controller,@Service,@repository,@Component
SpringMVC常用注解@Controller,@Service,@repository,@Component controller层使用@controller注解 @Controller 用于标记 ...
- 一 : springmvc常用注解
springmvc常用注解详解1.@Controller在SpringMVC 中,控制器Controller 负责处理由DispatcherServlet 分发的请求,它把用户请求的数据经过业务处理层 ...
- 04springMVC结构,mvc模式,spring-mvc流程,spring-mvc的第一个例子,三种handlerMapping,几种控制器,springmvc基于注解的开发,文件上传,拦截器,s
1. Spring-mvc介绍 1.1市面上流行的框架 Struts2(比较多) Springmvc(比较多而且属于上升的趋势) Struts1(即将被淘汰) 其他 1.2 spring-mv ...
- 转:springmvc常用注解标签详解
Spring5:@Autowired注解.@Resource注解和@Service注解 - IT·达人 - 博客园--这篇顺序渐进,讲得超级好--此人博客很不错http://www.cnblogs.c ...
随机推荐
- Java - 多线程中的不变性问题
这篇记录一下保证并发安全性的策略之——不变性. (注意:是Immutable,不是Invariant!) 将一连串行为组织为一个原子操作以保证不变性条件,或者使用同步机制保证可见性,以防止读到失效数据 ...
- 登陆oracle数据库时提示“ORA-28002: 7 天之后口令将过期” 或提示 密码过期
登陆oracle数据库时提示“ORA-28002: 7 天之后口令将过期” 或提示 密码过期. [原因/触发因素] 确定是由于oracle11g中默认在default概要文件中设置了“PASSWORD ...
- SQL语句整理(一) 数据库查询语言DQL
前言: 这是我学数据库时整理的学习资料,基本上包括了所以的SQL语句的知识点. 我的教材是人大王珊老师的<数据库系统概论>. 因为是手打的,所以会用一些细节打错了,但都挺明显也不多(考完试 ...
- golang 使用rrd的相关资料
一.简介 RRDtool是指Round Robin Database工具,即环状数据库.从功能上说,RRDtool可用于数据存储+数据展示.著名的网络流量绘图软件MRTG和集群监控系统Gan ...
- 合并excel的多个sheet
'合并excel的多个sheetSub 合并当前工作簿下的所有工作表()Application.ScreenUpdating = FalseFor j = 1 To Sheets.Count If S ...
- CentOS 7运维管理笔记(2)----修改命令提示符颜色
使用 su 命令切换到root用户: 使用 vi /etc/bashrc 命令插入如下代码: PS1="[\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m ...
- 常量、变量、数据类型 搞错N+1次 累死
public class hello { /** * * * * * @param args */ public static void main(String[] args) { String _$ ...
- JavaScript中的原型和原型链
1.原型是什么?原型链是什么? 原型是一个prototype对象,用于表示类型之间的关系: 原型链指的是在JavaScript中对象之间的继承是通过prototype对象指向父类对象,直到指向Obje ...
- 任务十四:零基础JavaScript编码(二)
任务目的 在上一任务基础上继续JavaScript的体验 学习JavaScript中的if判断语法,for循环语法 学习JavaScript中的数组对象 学习如何读取.处理数据,并动态创建.修改DOM ...
- nodejs + redis/mysql 连接池问题
nodejs + redis/mysql 连接池问题 需不需要连接池 连接池的作用主要是较少每次临时建立连接所带来的开销.初步一看,nodejs运行单线程上,它不能同时使用多个连接,乍一看是不需要连接 ...