- 建立web項目并導入jar包
- 在web.xml中進行servlet的配置
-
<?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> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 以servlet的方式配置SpringMVC的核心控制器 --> <servlet> <servlet-name>springMvc</servlet-name> <!-- springMVC的核心類(前端控制器) --> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!-- 通過初始化參數配置springMVC的核心配置配檔案的位置 --> <init-param> <param-name>contextConfigLocation</param-name> <!-- classpath:表示源檔案夾下 --> <param-value>classpath:springmvc-servlet.xml</param-value> </init-param> <!-- 加載的順序 --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>springMvc</servlet-name> <!-- 攔截所有的請求 --> <url-pattern>/</url-pattern> </servlet-mapping> </web-app>
-
- 在項目下建立一個源檔案夾(conf)放springmvc-servlet.xml
- 配置springmvc-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:mvc="http://www.springframework.org/schema/mvc" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd"> <!--配置處理映射器( 通過頁面請求的url路徑映射到控制器的bean名稱,決定跳到那個控制器controller) --> <bean name="/test1" class="com.controller.TestController"></bean> <!-- 配置自動掃描注解的包 --> <context:component-scan base-package="com.controller"></context:component-scan> <!-- 配置讀取SpringMVC的注解的驅動 --> <mvc:annotation-driven></mvc:annotation-driven> <!-- 配置視圖解析器 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 字首 --> <property name="prefix" value="/"></property> <!-- 字尾 --> <property name="suffix" value=".jsp"></property> </bean> </beans>
-
- 建立controller控制器(包括前背景=裝)
- 第一種是繼承AbstractController
-
package com.controller; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.AbstractController; /** * 控制器controller * @author asus * */ public class TestController extends AbstractController { @Override protected ModelAndView handleRequestInternal(HttpServletRequest arg0, HttpServletResponse arg1) throws Exception { System.out.println("你好!SpringMVC"); //成功後跳轉到success.jsp中 ModelAndView mv= new ModelAndView("success"); return mv; } }
-
- 使用@Controller注解的方式定義
- 首先要配置
-
package com.controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; @Controller //使用注解定義一個控制器 public class IndexController { @RequestMapping("/hello") public String a1(){ System.out.println("使用注解的方式通路controller"); return "success";//需要跳轉的view } }
- 首先要配置
- 第一種是繼承AbstractController
- 前背景傳值的方法
- 實作的代碼
- 通路的jsp
-
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <% String path = request.getContextPath(); String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <base href="<%=basePath%>" target="_blank" rel="external nofollow" > <title>My JSP 'index.jsp' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> <!-- <link rel="stylesheet" type="text/css" href="styles.css" target="_blank" rel="external nofollow" > --> </head> <body> <a href="test1" target="_blank" rel="external nofollow" >第一個springMVC</a> <a href="hello" target="_blank" rel="external nofollow" >使用注解的方式通路controller1</a> <a href="test/hello" target="_blank" rel="external nofollow" >前台向背景傳值測試1(空值)</a> <a href="test/hello1?userName=zhangsan1" target="_blank" rel="external nofollow" >前台向背景傳值測試2</a> <a href="test/hello2?name=zhangsan2" target="_blank" rel="external nofollow" >前台向背景傳值測試3</a> <a href="test/hello3?userName=張三&password=123&age=18" target="_blank" rel="external nofollow" >前台向背景傳值測試4(對象)</a> <a href="test/hello4?userName=張三" target="_blank" rel="external nofollow" >前台向背景傳值測試5(request)</a> </body> </html>
-
- controller控制器層
-
package com.controller; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.pojo.Student; //使用注解定義一個控制器 @Controller @RequestMapping("/test")//表示第一層路徑 public class HelloController { @RequestMapping("/hello") // 如果前台沒有傳值,背景接收了使用 @RequestParam(value="name",required=false)進行指定就不會報錯 public String a1( @RequestParam(value = "name", required = false) String userName) { System.out.println("傳值測試1:" + userName); return "show";//需要跳轉的頁面 } @RequestMapping("/hello1") // 直接擷取(參數名稱要跟前台傳的參數名稱一緻) public ModelAndView a2(String userName) { System.out.println("傳值測試2:" + userName); ModelAndView mv=new ModelAndView(); mv.addObject("userName", userName);//使用ModelAndView對象儲存參數值 mv.setViewName("show");//需要跳轉的頁面 return mv; } @RequestMapping("/hello2") // 使用配置的方式擷取(名稱不一緻可以使用配置@RequestParam配置) public String a3(@RequestParam("name") String userName,Model model) { System.out.println("傳值測試3:" + userName); model.addAttribute("userName", userName);//使用model進行儲存 return "show";//需要跳轉的頁面 } @RequestMapping("/hello3") // 使用對象來擷取(前台參數必須和類裡面的屬性名一緻) public String a4(Student student,Map<String, Object> map) { System.out.println("傳值測試4(對象):" + student.getUserName() + "-" + student.getPassword() + "-" + student.getAge()); map.put("userName", student.getUserName());//使用map集合進行儲存 return "show";//需要跳轉的頁面 } @RequestMapping("/hello4") // 使用HttpServletRequest來擷取 public String a5(HttpServletRequest request) { System.out.println("傳值測試5(request):" + request.getParameter("userName")); String userName=request.getParameter("userName");//擷取前台傳過來的資料 request.setAttribute("userName", userName);//使用request将值儲存在作用域中 return "show";//需要跳轉的頁面 } }
-
- 跳轉後的頁面,直接用${}取值
-
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> 歡迎: ${userName } </body> </html>
-
- 通路的jsp