搭建SpringMVC详解

本文内容:

1、创建web项目:

2、引入所需jar包:

3、配置web.xml文件:

4、配置application.xml文件:

5、jsp文件内容:


1、创建web项目:

                  

2、引入所需jar包:

    在这里HikariCP,mysql,servlet,spring-jdbc,spring-tx这五个jar包不需要。

                

3、配置web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>SpringMVC</display-name>
  <welcome-file-list>
    <welcome-file>add.jsp</welcome-file>
  </welcome-file-list>
  
  <servlet>
  	<servlet-name>DispatcherServlet</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:application.xml</param-value>
  	</init-param>
  	<load-on-startup>1</load-on-startup>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>DispatcherServlet</servlet-name>
  	<url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>

      1、<url-pattern>*</url-pattern>表示所有请求都可以被DispatcherServlet拦截,但没必要让所有请求都被DispatcherServlet拦截,所以在这里我将其设置为,只有以.do为后缀的请求才能被DispatcherServlet拦截;<url-pattern>*.do</url-pattern>
      2、<init-param>
              <param-name>contextConfigLocation</param-name>
              <param-value>classpath:application.xml</param-value>
           </init-param>
          SpringMVC之前:new ClassPathXMLApplicationContext("application.xml")这行代码创建了Spring容器,并且在非懒加载的情况下,创建该文件中可以创建的类的对象并放到Spring容器中
          SpringMVC之后:<load-on-startup>1</load-on-startup>------>Tomcat启动时创建DispatcherServlet对象并且调用init方法(init方法是org.springframework.web.servlet.HttpServletBean类中的方法)
          然后init-param配置的信息起作用——> 创建Spring容器,并且创建该文件中可以创建的类(bean声明,或者扫描到的类)的对象并放到Spring容器中:@Controller()、@Service、@Component、@Repository(相当于new ClassPathXMLApplicationContext("application.xml")起到的作用)

package com.zzu.student;

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

@Controller
public class StudentController {

	@RequestMapping(value="/student/add.do",method=RequestMethod.POST)
	public String add(String mobile) {
		System.out.println(mobile);
		return "result";
	}
}

      3、@Controller修饰的类不仅会被实例化,且SpringMVC会收集该类中@RequestMapping的信息并存到Map集合中(key的值是@RequestMapping中的value属性值;Map集合中的value指方法全名)<String,Method> ------> </student/add.do,com.zzu.student.StudentController.add(String)>
          点击“提交”后,会发送请求/student/add.do;由于该请求以.do结尾,就可以被DispatcherServlet捕获(这是因为在web.xml中设置的,只有以.do结尾的请求,才能进入DispatcherServlet),DispatcherServlet会查询Map集合,最终找到相应的方法。

4、配置application.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:context="http://www.springframework.org/schema/context"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd">

	<context:component-scan base-package="com.zzu"></context:component-scan>
	
	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp" ></bean>
</beans>

    <context>是为了扫描添加有@Service,@controller,@Component,@repository注解的类

    <bean>是为了创建解释器对象,p:prefix的值代表jsp文件的前缀,p:suffix的值代表着jsp文件的后缀,加上jsp文件的名字,(在这里我创建的jsp文件为,add.jsp)组合起来就是/add.jsp  ;这是jsp文件的路径。

5、jsp文件内容:

//add.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="./student/add.do" method="post">
			<input name="mobile" placeholder="请输入手机号"/>
			<input type="submit" value="提交"/>
		</form>
	</body>
</html> 

    在<form>中,action的值代表着@RequestMapping中的.value值,method默认使用get方法,这里我设置成了post方法。

//result.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>
		ok
	</body>
</html>

    发布后执行结果就是:

          

    输入值并且点击提交后得结果:界面显示值:  ok

    这时在eclipse的控制台会输出提交的手机号码;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值