转载请申明转载出处:http://blog.csdn.net/qq5132834/article/details/52199255
在上一节中,漏掉了一个内容,那就是【主动注入】功能的实现:
1、在类文件中新建一个包:【com.zuk.services】,并在其中新建一个类【PersonService.java】,其中要特别注意【@Componet】,必须添加上。内容如下:
package com.zuk.services; import org.springframework.stereotype.Component; @Component public class PersonService { public final static String TAG = "com.zuk.services.PersonService"; public PersonService(){ } public void showTag(){ System.out.println(TAG); } }2、在【mvc-servlet.xml】文件中新增一条数据如下:
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-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/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd" default-autowire="byName" > <bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> <context:component-scan base-package="com.zuk.services" /> <!-- 扫描com.zuk.services这个包里所以的service类,【务必在类上标注:@Component】,此时可以采用@Autowired实现自动注入这个包里面全部的对象 --> <context:component-scan base-package="com.zuk.controllers" /> <!-- 扫描com.zuk.controllers这个包里的所以controller类,【务必在类上标注:@Controller】 --> <!-- ViewResolver --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <property name="prefix" value="/WEB-INF"/><!-- 也可以放空 --> <!-- <property name="prefix" value="/WEB-INF/jsp/"/> --> <!-- 制定前缀字符串 --> <property name="suffix" value=".jsp"/> <!-- 跳转后添加后缀 --> </bean> <!-- ajax请求中文乱码解决 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"> <property name="messageConverters"> <list> <bean class="org.springframework.http.converter.StringHttpMessageConverter"> <property name="supportedMediaTypes"> <list> <value>text/plain;charset=UTF-8</value> </list> </property> </bean> </list> </property> </bean> </beans>其中数据是:
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor" /> <context:component-scan base-package="com.zuk.services" /> <!-- 扫描com.zuk.services这个包里所以的service类,【务必在类上标注:@Component】,此时可以采用@Autowired实现自动注入这个包里面全部的对象 -->3、在【HelloController.java】代码中实现自动注入:
@Autowired public PersonService personService;通过加上【@Atuowired】方式实现自动注入,
不需要用【public PersonService personService = new PersonService();】,
调用PersonService类中的方法【personService.showTag(); 】
全部源代码如下:
package com.zuk.controllers; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.nutz.json.Json; import org.nutz.lang.util.NutMap; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.zuk.model.Person; import com.zuk.services.PersonService; /** * @author 513283439@qq.com * */ @Controller @RequestMapping(value="HelloController") public class HelloController { @Autowired public PersonService personService; @RequestMapping(value = "/hello.xhtml") public String hello(HttpSession ession, HttpServletRequest request, HttpServletResponse response, Model model, @RequestParam(value="message", required=false) String message){ personService.showTag(); System.out.println(message); model.addAttribute("message", message); return "/jsp/hello"; /** * 跳转的实际路径要算上mvc-servlet.xml中配置的 * 前缀:/WEB-INF; * 后缀:.jsp * 实际路径:/WEB-INF/jsp/hello.jsp * */ } /** * <br>主要解决两个问题: * <br>1、POST方法中文乱码问题; * <br>2、将前端表单里面的name属性的值直接映射到java对象中。 * */ @RequestMapping(value = "/actionForm.xhtml") public String actionForm(HttpSession ession, HttpServletRequest request, HttpServletResponse response, Model model, @ModelAttribute Person person ){ System.out.println(person.getUsid()); System.out.println(person.getPawd()); System.out.println(person.getComp()); model.addAttribute("usid", "POST中文乱码-->>"+person.getUsid()); model.addAttribute("pawd", "POST中文乱码-->>"+person.getPawd()); model.addAttribute("comp", "POST中文乱码-->>"+person.getComp()); return "/jsp/hello"; } /** *<br>主要解决ajax请求返回json数据烈性 * */ @ResponseBody @RequestMapping(value = "/ajaxForm.json", produces = "text/html;charset=UTF-8") public String ajaxForm(HttpSession ession, HttpServletRequest request, HttpServletResponse response, Model model, @ModelAttribute Person person ){ System.out.println(person.getUsid()); System.out.println(person.getPawd()); System.out.println(person.getComp()); model.addAttribute("usid", "ajaxForm-->>"+person.getUsid()); model.addAttribute("pawd", "ajaxForm-->>"+person.getPawd()); model.addAttribute("comp", "ajaxForm-->>"+person.getComp()); NutMap result = NutMap.NEW(); result.put("data", person); String json = Json.toJson(result); System.out.println(json); return json; } }4、源代码地址:http://download.csdn.net/detail/qq5132834/9602471