- 创建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%>"> <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>
-
- 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
SpringMVC框架简单搭建和前后台传值
最新推荐文章于 2022-09-23 22:42:22 发布