亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

SpringMVC 注解 和非注解

系統(tǒng) 2142 0
首先看看非注解的項(xiàng)目結(jié)構(gòu)
SpringMVC 注解 和非注解

在web.xml文件 配置springmvc 轉(zhuǎn)發(fā)調(diào)度servlet 和 Date 類(lèi)型參數(shù)的自動(dòng)轉(zhuǎn)型
    
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name></display-name>

	<!-- 中央控制器 -->
	<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>


	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>


  


編寫(xiě) spring 配置文件 配置 映射處理器 和 控制器 或者 攔截器
    
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xmlns="http://www.springframework.org/schema/beans"  
    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:tx="http://www.springframework.org/schema/tx"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
	    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	    http://www.springframework.org/schema/mvc
	    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
	    http://www.springframework.org/schema/context
	    http://www.springframework.org/schema/context/spring-context-3.1.xsd 
	    http://www.springframework.org/schema/aop  
	    http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
	    http://www.springframework.org/schema/tx 
	    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
		
		<!-- 映射處理器之間是獨(dú)立的,相互不影響 -->
		
		<!-- 默認(rèn)的映射處理器  -->
		<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
		
		<!-- 簡(jiǎn)單URL的映射處理器 -->
		<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
			<property name="mappings">
				<props>
					<prop key="/hello2.do">testController</prop>
				</props>
			</property>
		</bean>
		
		<!-- 控制器類(lèi)名映射處理器 (注意:類(lèi)名首字母消息.例如:http://192.168.0.88/springmvc-1/testController.do) -->
		<bean class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping"/>
		
		<!--配置controller,handlerMapping,ViewResolver,interceptor  -->
		<!--使用默認(rèn)的映射處理器來(lái)映射 controller -->
		<bean id="testController" class="cn.sh.springmvc.TestController" name="/hello.do"/>
		
                <!--視圖解析器-->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<!-- webroot到一指定文件夾文件路徑 -->
			<property name="prefix" value="/WEB-INF/jsp/"/>
			<!-- 視圖名稱(chēng)后綴  -->
			<property name="suffix" value=".jsp"/>
		</bean>
</beans> 

  


然后編寫(xiě) springmvc的控制器
    
package cn.sh.springmvc;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.AbstractController;

public class TestController extends AbstractController {

	@Override
	protected ModelAndView handleRequestInternal(HttpServletRequest arg0,
			HttpServletResponse arg1) throws Exception {
		
		System.out.println("hello springmvc");
		return new ModelAndView("homepage/index");
	}

}

  

http://localhost:8080/springmvc-1/hello.do 就可以訪問(wèn)了


采用注解類(lèi)配置springmvc

SpringMVC 注解 和非注解
在web.xml中配置spring的中央控制器
同時(shí)也可以指定初始化參數(shù)? 設(shè)定 spring配置文件的路徑
    
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
	http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
	<display-name></display-name>

	<!-- 中央控制器 -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<!-- 如果不把springmvc-serlvet.xml放在 web-inf 放在 src/config/下面的話(huà)就需要在這里指定配置文件的路徑-->
		<init-param>
			<param-name>contextConfigLoaction</param-name>
			<param-value>classpath:springmvc.xml</param-value>
		</init-param>
	</servlet>
	<servlet-mapping>
		<servlet-name>springmvc</servlet-name>
		<url-pattern>*.do</url-pattern>
	</servlet-mapping>

	<welcome-file-list>
		<welcome-file>index.jsp</welcome-file>
	</welcome-file-list>
</web-app>

  


編寫(xiě) springmvc-servlet.xml文件
    
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
    xmlns="http://www.springframework.org/schema/beans"  
    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:tx="http://www.springframework.org/schema/tx"  
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
	    http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
	    http://www.springframework.org/schema/mvc
	    http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd
	    http://www.springframework.org/schema/context
	    http://www.springframework.org/schema/context/spring-context-3.1.xsd 
	    http://www.springframework.org/schema/aop  
	    http://www.springframework.org/schema/aop/spring-aop-3.1.xsd 
	    http://www.springframework.org/schema/tx 
	    http://www.springframework.org/schema/tx/spring-tx-3.1.xsd">
		
		<!-- mvc的注解驅(qū)動(dòng) -->
		<mvc:annotation-driven/>
		<!-- 一旦有掃描器的定義mvc:annotation-driven可以不需要,掃描器已經(jīng)有了注解驅(qū)動(dòng)的功能 -->
		<context:component-scan base-package="cn.sh.springmvc"/>
	
		<!-- 視圖解析器 -->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
			<!-- webroot到一指定文件夾文件路徑 -->
			<property name="prefix" value="/WEB-INF/jsp/"/>
			<!-- 視圖名稱(chēng)后綴  -->
			<property name="suffix" value=".jsp"/>
		</bean>
		
		<!-- 
    
      文件上傳
    
    解析器 id:必須是這個(gè)-->
		<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
			<!-- 
    
      文件上傳
    
    最大值,以 bit為單位  --> 
			<property name="maxUploadSize" value="1024000"></property>
		</bean>
		
               <!-- 指定一個(gè)攔截器 對(duì)用戶(hù)的請(qǐng)求 異常 或者視圖進(jìn)行 一些處理-->  
		<mvc:interceptors>
			<mvc:interceptor>
				<!--某一模塊攔截: /myPath/** ,攔截所有的請(qǐng)求: /** -->
				<mvc:mapping path="/**"/>
				<bean class="cn.sh.springmvc.interceptor.MyInterceptor">
				</bean>
			</mvc:interceptor>
		
		</mvc:interceptors>
</beans> 

  


編寫(xiě)控制器(類(lèi)似struts里面的action)
下面有
傳統(tǒng)的請(qǐng)求
有異步請(qǐng)求
文件上傳 (注意添加jar和配置 文件上傳 解析器)
重定向請(qǐng)求
    
package cn.sh.springmvc;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintWriter;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Arrays;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.ServletRequestDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartFile;
import org.springframework.web.servlet.ModelAndView;

import cn.sh.springmvc.model.Person;
import cn.sh.springmvc.model.User;

@Controller  //用來(lái)標(biāo)注但欠累是springmvc的控制層類(lèi)
@RequestMapping("/homepage")  //類(lèi)是 struts2中的namespace
public class TestController{

	@RequestMapping("/hello.do")  //用來(lái)訪問(wèn)控制方法的注解
	public String hello(){
		System.out.println("注解成功");
		return "homepage/index";
	}

	
	//參數(shù)的傳遞  
	/**
	 * 方式一:HttpServletRequest
	 * @param request
	 * @return
	 */
	@RequestMapping("/toPesron.do")
	public String toPerson(HttpServletRequest request){
		String result=request.getParameter("name");
		System.out.println(result);
		return "homepage/index";
	}
	
	/**
	 * 方式二:將要傳遞的參數(shù)定義在方法中 而且 會(huì)自動(dòng)轉(zhuǎn)類(lèi)型
	 * @param name
	 * @param age
	 * @return
	 */
	@RequestMapping("/toPesron1.do")
	public String toPerson1(String name,Integer age,Date birthday){  //定義 參數(shù)名也可以了
		System.out.println(name);
		System.out.println(age);
		System.out.println(birthday);
		return "homepage/index";
	}
	
	/**
	 * 傳遞參數(shù)的 名字必須要與實(shí)體類(lèi)的屬性set方法后面的字符串匹配才能接受參數(shù),首字母大小寫(xiě)不區(qū)分
	 * 請(qǐng)求中傳遞的參數(shù)只要是能和參數(shù)列表里面的變量名或者實(shí)體里面的set后面字符串匹配的上就能接受到
	 * @param person
	 * @return
	 */
	@RequestMapping("/toPesron2.do")
	public String toPerson2(Person person,User user){  //定義 參數(shù)名也可以了
		System.out.println(person);
		System.out.println(user);
		return "homepage/index";
	}
	
	/**
	 * 數(shù)組結(jié)構(gòu)
	 * @param name
	 * @return
	 */
	@RequestMapping("/toPerson3.do")
	public String upload(String[] name){  //定義 參數(shù)名也可以了
		System.out.println(Arrays.toString(name));
		return "homepage/index";
	}
	
	/**
	 * 將數(shù)據(jù)傳遞到 jsp頁(yè)面去
	 * 不建議使用
	 * @throws ParseException 
	 */
	@RequestMapping("/toPerson4.do")
	public ModelAndView toPerson4() throws ParseException{
		Person person=new Person();
		person.setName("james");
		person.setAge(28);
		person.setAddress("maiami");
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Date birthday=sdf.parse("1985-01-22");
		person.setBirthday(birthday);
		Map<String, Object> map=new HashMap<String, Object>();
		map.put("p",person);
		return new ModelAndView("index",map);
	}
	/**
	 * 不建議使用
	 * @param map
	 * @return
	 * @throws ParseException
	 */
	@RequestMapping("/toPerson5.do")
	public String toPerson5(Map<String, Object> map) throws ParseException{
		Person person=new Person();
		person.setName("james");
		person.setAge(28);
		person.setAddress("maiami");
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Date birthday=sdf.parse("1985-01-22");
		person.setBirthday(birthday);
		map.put("p",person);
		return "index";
	}
	
	/**
	 * 建議使用
	 * @param model
	 * @return
	 * @throws ParseException
	 */
	@RequestMapping("/toPerson6.do")
	public String toPerson6(Model model) throws ParseException{
		Person person=new Person();
		person.setName("james");
		person.setAge(28);
		person.setAddress("maiami");
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
		Date birthday=sdf.parse("1985-01-22");
		person.setBirthday(birthday);
		model.addAttribute("p", person);
		return "index";
	}
	
	/**
	 * 不建議使用
	 * @param name
	 * @param response
	 * @throws ParseException
	 */
	@RequestMapping("/ajax.do")
	public void ajax(String name,HttpServletResponse response) throws ParseException{
		String result="hello"+name; 
		try {
			response.getWriter().write(result);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	/**
	 * 建議使用
	 * @param name
	 * @param out
	 * @throws ParseException
	 */
	@RequestMapping("/ajax1.do")
	public void ajax1(String name,PrintWriter out) throws ParseException{
		String result="hello"+name; 
		try {
			out.print(result);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	@RequestMapping("/toajax.do")
	public String toajax() throws ParseException{
		return "ajax";
	}
	
	@RequestMapping("/toFrom.do")
	public String toFrom() throws ParseException{
		return "form";
	}
	
	@RequestMapping(value="/toPerson7.do",method=RequestMethod.POST)
	public String toPerson7(Person person){  //定義 參數(shù)名也可以了
		System.out.println(person);
		return "homepage/index";
	}
	
	@RequestMapping(value="/toPerson8.do",method=RequestMethod.POST)
	public String toPerson8(Person person,HttpServletRequest request) throws FileNotFoundException{  //定義 參數(shù)名也可以了
		System.out.println(person);
		MultipartHttpServletRequest rm=(MultipartHttpServletRequest)request;
		CommonsMultipartFile cfile=(CommonsMultipartFile)rm.getFile("image");// input的名稱(chēng)
		byte[] bfile=cfile.getBytes();
		String fileName="";
		SimpleDateFormat format=new SimpleDateFormat("yyyyMMddHHmmssSSS");
		fileName=format.format(new Date());
		fileName+=(int)(Math.random()*1000);  //3位隨機(jī)數(shù)
		
		//文件全名稱(chēng)
		String origFileName=cfile.getOriginalFilename();
		
		//文件后綴
		String suffix=origFileName.substring(origFileName.lastIndexOf("."));
		
		//項(xiàng)目的部署路徑
		String path=request.getSession().getServletContext().getRealPath("/");
		System.out.println(path);
		System.out.println(request.getServletPath());
		
		OutputStream out=new FileOutputStream(new File(path+"/upload/"+fileName+suffix));
		try {
			out.write(bfile);
			out.flush();
			out.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return "homepage/index";
	}
	
	
	@RequestMapping("/redtoFrom.do")
	public String redirectToFrom() throws ParseException{
		return "redirect:toFrom.do"; //可以在前面加上 namespace;
	}
	
	@RequestMapping("/redtoFrom1.do")
	public String redirectToFrom1() throws ParseException{
		// "/"表示從根目錄開(kāi)始找 
		return "redirect:/test/toFrom.do"; //可以在前面加上 namespace;
	}
	
	/**
	 * 注冊(cè)時(shí)間類(lèi)型的屬性編輯器
	 * @param binder
	 */
	@InitBinder
	public void initBinder(ServletRequestDataBinder binder){
		//注意 2012-12-02 和 2012-22-12(將變成 2013-10-12 做進(jìn)制轉(zhuǎn)換) 
		binder.registerCustomEditor(Date.class,
				new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"), true));
		
	}
}

  


多個(gè)控制器的相互引用
    
package cn.sh.springmvc;

import java.text.ParseException;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller  //用來(lái)標(biāo)注但欠累是springmvc的控制層類(lèi)
@RequestMapping("/test")  //類(lèi)是 struts2中的namespace
public class TestController1{
	
	@RequestMapping("/toFrom.do")
	public String toFrom() throws ParseException{
		return "form";
	}
}


  


自定義攔截器
    
package cn.sh.springmvc.interceptor;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

public class MyInterceptor implements HandlerInterceptor {

	/**
	 * 執(zhí)行時(shí)間:視圖解析完畢
	 * 主要做一些監(jiān)控的處理  比如 :異常  類(lèi)是 try  catch 后面的 finally
	 */
	public void afterCompletion(HttpServletRequest arg0,
			HttpServletResponse arg1, Object arg2, Exception ex)
			throws Exception {
		System.out.println("afterCompletion");
		ex.printStackTrace();

	}

	/**
	 * 執(zhí)行時(shí)機(jī):control 執(zhí)行完, 視圖解析沒(méi)有把頁(yè)面解析成頁(yè)面
	 * 可以對(duì)視圖做統(tǒng)一修改 主要提現(xiàn)在model上面(可以統(tǒng)一為 某個(gè)視圖 添加頭和尾 )
	 */
	public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2, ModelAndView mv) throws Exception {
		System.out.println("postHandle....");
		Map<String,Object> map=mv.getModel();
		map.put("test", "append something");
	}

	/**前置攔截
	 * 執(zhí)行時(shí)機(jī):在control之前執(zhí)行
	 * true:攔截通過(guò) 表示可以訪問(wèn)control
	 * false:不可以訪問(wèn)control
	 * Object: 訪問(wèn)的control 的類(lèi)的對(duì)象
	 * 可以做權(quán)限 校驗(yàn)和控制
	 */
	public boolean preHandle(HttpServletRequest arg0, HttpServletResponse arg1,
			Object arg2) throws Exception {
		System.out.println("preHandle....");
		return true;
	}

}


  

兩個(gè)參數(shù)實(shí)體類(lèi)
    
package cn.sh.springmvc.model;

import java.util.Date;

public class User {

	private String name;
	private Integer age;
	private String address;
	private Date birthday;
	
	//get set ..
	@Override
	public String toString() {
		return this.name+"/"+this.age+"/"+this.address+"/"+this.birthday;
	}
	
}
package cn.sh.springmvc.model;

import java.util.Date;

public class Person {

	private String name;
	private Integer age;
	private String address;
	private Date birthday;
	
	//get set...
	@Override
	public String toString() {
		return this.name+"/"+this.age+"/"+this.address+"/"+this.birthday;
	}
}


  

幾個(gè)jsp
form.jsp
    
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
<script type="text/javascript" src="js/jquery.js"></script>

<script type="text/javascript">
		$(function(){
			$("#mybutton").click(
				function(){
					$.ajax({
						url:"homepage/ajax1.do",
						type:"POST",	
						dataType:"text",
						data:{
							name:"zhangh"
						},
						success:function(responseText){
							alert(responseText);
						},
						error:function(){
							alert("system error");
						}
					});	
				}		
			);
		});
	
	</script>
  </head>
  
  <body>
    <form action="homepage/toPerson8.do" method="post"  enctype="multipart/form-data">
    	name:<input name="name"><br/>
    	age:<input name="age"><br/>
    	address:<input name="address"><br/>
    	birthday:<input name="birthday"><br/>
    	file:<input type="file" name="image"><br/>
    	<input type="submit" value="submit">
    </form>
<input type="button" id="mybutton" value="click">
  </body>
</html>

  



SpringMVC 注解 和非注解


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦?。?!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 欧美久久综合九色综合 | 久青草香蕉精品视频在线 | 自拍视频精品 | 香蕉久久一区二区三区 | 天天插天天插 | 福利视频自拍 | 一久久| 色四月| 久久综合偷偷噜噜噜色 | 国产精品久久久久久久久久影院 | 天天干天天噜 | 欧美日韩成人在线观看 | 极品美女一级毛片免费 | 天天干天天爽 | 成人国产三级在线播放 | 欧美性插视频 | 中文字幕久精品免费视频蜜桃视频 | 亚洲成人在线免费 | 成人国产片免费 | 亚洲色视频 | 免费人成在线观看网站品爱网 | 日本永久视频 | 日本波多野结衣字幕久久 | 美国毛片免费观看 | 久久婷婷一区二区三区 | 国产精品12p| 一本大道香蕉中文在线高清 | 久久国产麻豆 | 在线观看香蕉免费啪在线观看 | 亚洲干综合 | 不卡欧美| 亚洲已满18点击进入在线观看 | 97久久精品国产精品青草 | 天天干在线免费视频 | 国产精品久久久久一区二区 | 欧洲老妇bbbbbxxxxx | 久热综合 | 精品精品国产自在香蕉网 | 91视频播放 | 亚洲免费一级视频 | 久久综合久美利坚合众国 |