聲明:這段時間做SpringMVC項目,在控制器接受前端界面的值,向前端界面傳送值方面和前端界面接受值方面花了很長時間,也看了一些博客,現在總結下來。
1:login.jsp
<%@ 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> <form action = "${pageContext.request.contextPath}/test" method = "post"> 用戶名:<input type = "text" id = "name" name = "name" value = ""/> <input type = "submit" value = "測試"/> </form> </body> </html>
2:UserController控制器
package com.test.controller; import java.util.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.view.RedirectView; @Controller//這個必須要加,否則控制器接收不到前端發來的請求 public class UserController { @RequestMapping(value="/test",method = RequestMethod.POST) public ModelAndView test(ModelAndView mv, HttpServletRequest request,HttpServletResponse response) throws Exception { //綁定值的三種方式 //第一種方式 String name = request.getParameter("name"); //System.out.println(name); mv.addObject("username", name);//綁定值 //第二種方式 // List List<String> list = new ArrayList<String>(); list.add("java"); list.add("python"); list.add("c++"); mv.addObject("BookList", list); //第三種方式 // Map Map<String,String> map = new HashMap<String, String>(); map.put("beijing", "北京"); map.put("lisi", "成都"); map.put("wangmazi", "西安"); mv.addObject("map", map); //綁定傳送地址的兩種方式 //第一種方式 mv.setViewName("success"); //第二種方式 不知道為什么在前端接受不到username的值, // mv.setView(new RedirectView("success.jsp")); return mv; } }
3.success,jsp
<%@ 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"> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Insert title here</title> </head> <body> <h1>name_el:${username}</h1> <% String name = request.getAttribute("username").toString();%> <h2>name_java:<%=name%></h2> <h3>name_java_el:${name}接收不到</h3> <!-- 輸出List --> <p>書籍列表</p> <c:forEach items="${BookList}" var="node"> <c:out value="${node}"></c:out> </c:forEach> <br/> <br/> <!-- 輸出Map --> <c:forEach items="${map}" var="node"> 姓名:<c:out value="${node.key}"></c:out> 住址:<c:out value="${node.value}"></c:out> <br/> </c:forEach> </body> </html>
4.Spring.xml文件
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:task="http://www.springframework.org/schema/task" 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:tx="http://www.springframework.org/schema/tx" 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.xsd"> <!-- 自動掃描(自動注入)開啟注釋$Controller --> <context:component-scan base-package="com.test.controller"/> <!--內部視圖解析器,JSP與JSTL模板 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--指定視圖渲染類 --> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" /> <!--自動添加到路徑中的前綴 --> <property name="prefix" value="/" /> <!--自動添加到路徑中的后綴 --> <property name="suffix" value=".jsp" /> <!--設置所有視圖的內容類型,如果視圖本身設置內容類型視圖類可以忽略 --> <property name="contentType" value="text/html;charset=UTF-8" /> </bean> </beans>
5.登錄:
6.顯示:
7.解釋一下:
spring的MVC是對Servlet的封裝,ModelAndView中addObject應該是對request.setAttribute方法的封裝,所以在jsp中如果想以el表達式來讀取數據,應該用${requestScope.depts}或者${depts},對應於<%=request.getAttribute("depts").toString();%>