您的位置:首页 > 编程语言 > Java开发

jee、spring、spring mvc、mybatis 学习(三)

2016-08-13 14:39 295 查看
转载请申明转载出处: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: