Spring学习笔记1:SpringMVC环境的搭建

1.SpringMVC环境

环境我选取了jre1.6, javaEE 6 的环境,spring 选用了3.24版本,个人觉得环境问题的差异造成影响不大,一般配置文件都是大同小异。


2.个人理解SpringMVC原理

DispatcherServlet: 前台

HandlerMapping::地图

HandlerAdapter:职责表

Handler:处理人员, 哪个一个Controller处理

Controller:处理完后返回一个ModelAndView

ViewResolver:解析视图

 

一个请求(邮件)过来了, DispatcherServlet(前台)解析这个请求的uri,然后去查找HandlerMapping(地图),然后是属于什么部门处理的,这里会有一个HandlerAdapter(职责表),它会告诉这个request(邮件)是谁处理的,然后找到了Handler(处理人员), 一般我们会新建若干个Controller,去处理这些请求,经过一个系列的处理接受后,会返回ModelAndView,最后经过ViewResolver解析,这个过程可以理解为包装,然后返回给用户,如下图所示,下面DispatcherServlet作用巨大,几乎每一个步骤都经过前台,因为前台的作用负责调度这些工作的执行。Handler(处理人员)处理完后还要打电话通知DispatcherServlet(前台),DispatcherServlet(前台)再打电话给ViewResolver包装这个处理结果





3.简单的配置

首先,最重要的当然是web.xml, 都大同小异


web.xml, 这里指定Spring MVC的配置文件在spring-servlet.xml,Spring 配置文件在 applicationContext.xml,都在conf包下面,大家可以在src新建一个conf,这里spring mvc 拦截所有的请求,大家也可以设置为*.do,只拦截.do结尾的请求

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
	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_3_0.xsd">
  <display-name></display-name>	
  
  	<welcome-file-list>
    	<welcome-file>index.jsp</welcome-file>
  	</welcome-file-list>
  
  
  	<!-- Spring上下文监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
  
  	<!-- Spring上下文容器配置文件 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>
			classpath:conf/applicationContext.xml
        </param-value>
	</context-param>
	
	
	<!-- Spring MVC监听器 -->
	<servlet>
		<servlet-name>springmvc</servlet-name>
		<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
		<init-param>
			<param-name>contextConfigLocation</param-name>
			<param-value> 
				 classpath:conf/spring-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>
	
	
	
	<!-- 字符拦截器 -->
	<filter>
		<filter-name>encodingFilter</filter-name>
		<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
		<init-param>
			<param-name>encoding</param-name>
			<param-value>UTF-8</param-value>
		</init-param>
		<init-param>
			<param-name>forceEncoding</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>encodingFilter</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>
  
</web-app>


spring-servlet.xml ,配置spring mvc 请求一些情况, 这里我把资源文件的访问注释掉了,此时html访问js, css会报404错误,这里可以选择开启,任君选择

这里我把jsp页面放到page文件夹下面,大家可以在page新建需要的jsp页面

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:tx="http://www.springframework.org/schema/tx"
	xmlns:aop="http://www.springframework.org/schema/aop" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	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	
      http://www.springframework.org/schema/tx	
      http://www.springframework.org/schema/tx/spring-tx-3.2.xsd	
      http://www.springframework.org/schema/aop 
      http://www.springframework.org/schema/aop/spring-aop-3.2.xsd" default-lazy-init="true" >
      
     <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->  
     <mvc:annotation-driven />
       
     <!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->  
     <context:component-scan base-package="com.cheng" />  
     
     <!-- 对静态资源文件的访问 , 可以访问所有js, css等文件-->
	<!-- <mvc:default-servlet-handler /> -->
	
	<!-- 映射js, css可以直接访问 -->
	<!-- <mvc:resources location="/image/" mapping="/image/**"/> -->
	<!-- <mvc:resources location="/js/" mapping="/js/**"/> -->
	<!-- <mvc:resources location="/css/" mapping="/css/**"/> -->
	<!--<mvc:resources location="/upload/" mapping="/upload/**"/> -->
     
     <!-- 模型视图名称的解析,返回视图名称添加前后缀 -->  
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/page/" p:suffix=".jsp" />  
     
     <!-- 上传文件时,需要配置MultipartResolver处理器 -->
	 <bean id="multipartResolver"
		class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<!-- 所有上传文件的总大小不能超过2000KB。maxUploadSize属性的限制不是单个文件容量,而是所有文件的容量之和 -->
		<property name="maxUploadSize" value="20000000" />
	 </bean>
     
</beans> 


TestController.java

package com.cheng.controller;

import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import org.springframework.web.bind.annotation.PathVariable;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RequestMethod;  
import org.springframework.web.servlet.ModelAndView; 
import org.springframework.stereotype.Controller;  
import org.springframework.ui.ModelMap;  
 



@Controller  
public class TestConstroller {  

	@RequestMapping(value = "/welcome", method = RequestMethod.GET)  
    public String welcome() {  
        return "/welcome";  
    }  
	
    @RequestMapping(value = "/login/{user}", method = RequestMethod.GET)  
    public ModelAndView sayhello(HttpServletRequest request,HttpServletResponse response,   
            @PathVariable("user") String user, ModelMap modelMap) throws Exception {  
        modelMap.put("user", user);  
        return new ModelAndView("/hello", modelMap);  
    }  
    
    
    
} 
访问以下路径即可
http://localhost:8080/Springmvcdemo/login/cheng

http://localhost:8080/Springmvcdemo/welcome



4.简单的传参


新建一个UserController, 配置文件还是前面那些,不用改变

package com.cheng.controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;

import com.cheng.vo.UserRequest;

@Controller
public class UserController {
	
	@RequestMapping(value = "/user/login", method = RequestMethod.POST)  
    public String login(UserRequest request, Model model) {
		
		System.out.println("姓名:" + request.getName());
		System.out.println("密码:" + request.getPassword());
		model.addAttribute("user", request);
        return "/user/user_info";  
    } 
	
	
	@RequestMapping(value = "/user/forword_login", method = RequestMethod.GET)  
    public String forword_login() {
		

        return "/user/user_login";  
    } 
	
}
UserRequest用来接收请求过来的参数,model则用于返回参数到jsp页面,以下是两个user_info.jsp和user_login.jsp页面,在pages/user/文件夹下面



user_info.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 'user_info.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>
    This is user_info page. hello, ${user.name }<br>
  </body>
</html>




user_login.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 'user_login.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>
  
  		<form action="user/login" method="post">
  			<table>
  				<tr>
  					<td>姓名:</td>
  					<td><input type="text" name="name"/></td>
  				</tr>
  				
  				<tr>
  					<td>密码:</td>
  					<td><input type="text" name="password"/></td>
  				</tr>
  				
  				<tr>
  					<td colspan="2"><input type="submit" value="登陆"/></td>
  				</tr>
  			</table>
  		</form>
  		
  </body>
</html>





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值