SpringMVC框架简单搭建和前后台传值

  1. 创建web项目并导入jar包
  2.  在web.xml中进行servlet的配置
    1. <?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>
      

       

  3. 在项目下创建一个源文件夹(conf)放springmvc-servlet.xml
    1.  
  4. 配置springmvc-servlet.xml
    1. <?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>
      
      
       
  5. 创建controller控制器(包括前后台=装)
    1.  第一种是继承AbstractController
      1. 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;
        	}
        
        }
        

         

    2. 使用@Controller注解的方式定义
      1. 首先要配置
      2. 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
        	}
        }
        
         
  6. 前后台传值的方法
    1.  
    2.  
  7. 实现的代码
    1. 访问的jsp
      1. <%@ 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%>">
            
            <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">
        	-->
          </head>
          
          <body>
        	<a href="test1">第一个springMVC</a>
        	<a href="hello">使用注解的方式访问controller1</a>
        	<a href="test/hello">前台向后台传值测试1(空值)</a>
        	<a href="test/hello1?userName=zhangsan1">前台向后台传值测试2</a>
        	<a href="test/hello2?name=zhangsan2">前台向后台传值测试3</a>
        	<a href="test/hello3?userName=张三&password=123&age=18">前台向后台传值测试4(对象)</a>
        	<a href="test/hello4?userName=张三">前台向后台传值测试5(request)</a>
        	
          </body>
        </html>
        
         
    2. controller控制器层
      1. 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";//需要跳转的页面
        	}
        }
        
         
    3. 跳转后的页面,直接用${}取值
      1. <%@ 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>
         
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值