spring注解







1.配置web.xml 默认会自动找springmvc-servlet.xml
  <servlet>
    <servlet-name>springmvc</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>springmvc</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>




2.新建Controller类
在TestController类中 extends AbstractController 
 handleRequestInternal方法中
 加入 // 前缀后缀之前的部分/WEB-INF/jsp/XXX.jsp
return new ModelAndView("index");


 




3.创建springmvc的核心配置文件
命名规则:中央控制器(servlet的名称)的名称+"-servlet.xml"  (springmvc-servlet.xml)
默认位置,WEB-INF下
配置:controller和视图解析器


复制头信息
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:aop="http://www.springframework.org/schema/aop" xmlns:p="http://www.springframework.org/schema/p"
xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-context-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">


 
 
 
 
 4.配置springmvc-servlet.xml
 
 <!-- 使用默认的映射处理器(HandlerMapping) 来处理controller不写HandlerMapping默认是这个 -->
 <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"></bean>


 <!-- 使用默认的映射处理器 来处理controller -->
<bean id="testController" name="/hello.do"
class="cn.itcast.springmvc.TestController">
</bean>




配置view显示映射
<!-- 视图解析器  前缀+viewname+后缀 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<!-- 指定jsp页面前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!-- 指定jsp页面后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>




二、注解spring  前三部一样


4.配置springmvc-servlet.xml
<!--mvc注解驱动-->
<mvc:annotation-driven />
<!--需要扫描的包-->
<context:component-scan base-package="cn.itcast.springmvc"></context:component-scan>




5.类注解


//用来标注springmvc的控制器类
@Controller
//Controller类的命名空间;加入后http://192.168.1.24/springDemo/test/hello.do
@RequestMapping("/test")




6.方法注解
 
@RequestMapping("/hello.do")
// 用来标注Controller名
public String hello() {
// 前缀后缀之前的部分/WEB-INF/jsp/index.jsp
return "index";
}




  /**http://192.168.1.24/springDemo/test/toPersonForm.do
* 提交表单,自动name属性的值注入,只有post能提交get无法提交
* @param person
* @return
*/
@RequestMapping(value="/toPersonForm.do",method=RequestMethod.POST)




7.注解获得请求值的方式


7.1/**
* HttpServletRequest可直接定义在参数列表

* @param request
* @return
*/
@RequestMapping("/toPerson.do")
public String toPerson(HttpServletRequest request) {
String name = request.getParameter("name");
System.out.println(name);
return "index";
}




7.2/**
* http://192.168.1.24/springDemo/test/toPersonStrings.do?name=11&age=12&
* address=hahah&birthday=2014-22-01 多个传值如果没有InitBinder属性编辑器则数据类型不能转换为Date

* @param name
* @param age
* @param address
* @param birthday
* @return
*/
@RequestMapping("/toPersonStrings.do")
public String toPersonStrings(String name, Integer age, String address,
Date birthday) {
System.out.println("toPersonBean:" + name);
System.out.println("toPersonBean:" + age);
System.out.println("toPersonBean:" + address);
System.out.println("toPersonBean:" + birthday);
return "index";
}


属性编辑器 把提交的string日期包装成 Date类型
/**
* desc:注册时间类型的属性编辑器

* @param binder
*/
@InitBinder
public void initBinder(ServletRequestDataBinder binder) {
System.out.println("调用了initBinder");
binder.registerCustomEditor(Date.class, new CustomDateEditor(
new SimpleDateFormat("yyyy-MM-dd"), true));
}










7.3/**
* http://192.168.1.24/springDemo/test/toPersonBean.do?name=11&age=12&
* address=hahah&birthday=2014-22-01
* desc:传递的参数名必须和实体类属性相同,而且实体属性必须有set方法.参数名不区分大小写 两个不同的类,属性一样都能注入

* @param bean
* @return
*/
@RequestMapping("/toPersonBean.do")
public String toPersonBean(Person bean) {
System.out.println(bean);

return "index";
}




8.注解返回数据的方式


   8.1/**ModelAndView
* http://192.168.1.24/springDemo/test/toPersonModelAndView.do
* desc:方法的返回值采用ModelAndView,相当于把结果数据放到request中 返回ModelAndView和数据

* @return
* @throws ParseException
*/
@RequestMapping("/toPersonModelAndView.do")
public ModelAndView toPersonModelAndView() throws ParseException {
Person person = new Person();  
Map<String, Person> map = new HashMap<String, Person>();
map.put("p", person);
return new ModelAndView("show", map);// /WEB-INF/jsp/show.jsp
}




8.2/**参数加入Map
* http://192.168.1.24/springDemo/test/toPersonMapString.do
* desc:方法的返回值采用Map, 返回map

* @return
* @throws ParseException
*/
@RequestMapping("/toPersonMapString.do")
public String toPersonMapString(Map<String, Person> map)
throws ParseException {


Person person = new Person();
person.setName("test");
 


map.put("p", person);
System.out.println("ff");
return "show";// /WEB-INF/jsp/show.jsp


}






8.3/**参数加入Model
* http://192.168.1.24/springDemo/test/toPersonModel.do desc:方法的返回值采用Model,
* 返回Model

* @return
* @throws ParseException
*/
@RequestMapping("/toPersonModel.do")
public String toPersonModel(Model model) throws ParseException {
Person person = new Person();
person.setName("test");
 
model.addAttribute("p", person);
System.out.println("ff");
return "show";// /WEB-INF/jsp/show.jsp
}



9.注解返回ajax数据的方式


<input id="mybutton" type="button" value="click"/>

<script type="text/javascript" src="js/jquery-1.6.2.js"></script>
    <script type="text/javascript">
$(function() {
$("#mybutton").click(function() {  
$.ajax({
url : "test/ajax.do",
type : "post",
dataType : "text",
data : {
name : "zhangsan"
},
success : function(responseText) {
alert(responseText);
},
error : function() {
alert("system error");
}
});
});
});
</script>


9.1
/**HttpServletResponse
* 返回ajax数据 不建议这样返回 先访问http://192.168.1.24/springDemo/test/toAjax.do
* 点击click访问数据
* desc:ajax的请求返回值类型应该是void,参数列表里直接定义HttpServletResponse.PrintWriter最后写到页面

* @param name
* @param response
*/
@RequestMapping("/ajax.do")
public void ajax(String name, HttpServletResponse response) {
System.out.println("ajax");
try {
response.getWriter().write("hello" + name);
} catch (IOException e) {
e.printStackTrace();
}
}
9.2
/**PrintWriter
* 建议使用,用PrintWriter输出

* @param name
* @param printWriter
*/
@RequestMapping("/ajaxToPrintWriter.do")
public void ajaxToPrintWriter(String name, PrintWriter printWriter) {
printWriter.write("PrintWriter say hello:" + name);
}




10.Controller内部重定向


/**重定向redirect
* Controller内部重定向 ,redirect:同一个Controller中的mapping值
* 地址栏改变,提交内容丢失
* http://192.168.1.24/springDemo/test/redirectToStudy.do?name=aaa
* @return
*/
@RequestMapping("/redirectToStudy.do")
public String redirectToStudy(Person person){
System.out.println("1:"+person);
return "redirect:toPersonForm.do";
}

/**重定向到另一个Controller的mapping
* "redirect:/test2/toPersonForm.do";
* redirect:/另一个controller/mappingKey
* 地址栏改变,提交内容丢失
* @return
*/
@RequestMapping("/redirectToOtherController.do")
public String redirectToOtherController(){ 
return "redirect:/test2/toPersonForm.do";
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dingsai88

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值