搭建SpringMVC详解

本文详细介绍了如何搭建SpringMVC项目,从创建web项目选择2.5版本开始,包括删除并重新创建src目录,拷贝必需的jar包和jsp页面,配置application.xml和web.xml文件,以及讲解了模块创建和客户端请求执行过程。
摘要由CSDN通过智能技术生成

搭建SpringMVC详解

1.创建web项目,选择2.5版本

在这里插入图片描述

2.搭建项目环境
2.1删除src,创建src目录.
step:右键点击项目—>鼠标移到New上—>点击Source Fonder—>输入创建目录(如图所示)

在这里插入图片描述
在这里插入图片描述

根据上面的步骤依次创建src目录,如图所示

在这里插入图片描述

2.2 拷入所需的jar包到lib中,如图所示

在这里插入图片描述

2.3 拷入所需的jsp页面,如图所示

在这里插入图片描述

2.4 配置文件
2.4.1 src/main/resource中创建名为application.xml的xml文件
step:src/main/resource—>New—>Other—>搜索spring—>点击Spring Bean Configuration—>创建名为application.xml的xml文件

在这里插入图片描述

在NameSpaces下勾选如下选项,之后点击Source

在这里插入图片描述

配置代码如下
<?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:mvc="http://www.springframework.org/schema/mvc"
	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
		http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd">
		<!--类似扫描的作用,指定base-packagebao开始的包内加了Controller、Service、Componet这三类注解的类自动实例化- -->
		<context:component-scan base-package="com.jd"></context:component-scan>
		
		<!--如果请求没有任何一个Controller中的某一个方法处理,则交给Web服务器默认Servlet处理-->
		<mvc:default-servlet-handler/>
		<mvc:annotation-driven></mvc:annotation-driven>
	
		<!-- 对返回的数据进行拼接,如/WEB-INF/view/success.jsp ,这样就能返回一个页面-->
		<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
				<property name="prefix" value="/WEB-INF/view/"></property> <!--前缀-->
				<property name="suffix"  value=".jsp"></property> <!--后缀-->
		</bean>
</beans>
2.4.2 配置web.xml的Servlet
<?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>moon</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
  	<servlet-name>DispatcherServlet</servlet-name>
  	<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  	 <!--init()方法传值-->
  	<init-param>
  		<param-name>contextConfigLocation</param-name>
  		<param-value>classpath:application.xml</param-value><!--配置资源,创建一个Spring容器-->
  	</init-param>
  	<!-- Tomcat启动时就创建,默认情况不是 -->
  	<load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
  	<servlet-name>DispatcherServlet</servlet-name>
  	<!-- /拦截所有的请求,每个请求都会到DispatcherServlet-->
  	<url-pattern>/</url-pattern>
  </servlet-mapping>
</web-app>
3.创建模块,下面举一个例子来更深入的了解一下
3.1模块创建如下

在这里插入图片描述

3.2客户端请求执行过程
step0 : Tomcat发布项目,执行web.xml文件中的代码
step1:客户端发请求,
如果请求没有对应的Controller处理,则会交给Web服务器进行处理,
跳出servlet,寻找外部静态资源,这里指Tomcat,

Tomcat寻找到index.jsp,跳转到indexController

<%@ page language="java" contentType="text/html; charset=Utf-8" pageEncoding="Utf-8"%>
<% 
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
	request.setAttribute("path", basePath);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
	<head>
		<title></title>
	</head>
	<body>
		<script type="text/javascript">
			location.href="${path}index/index.do";//与Map集合中@RequestMapping的value值相比,找到一样的,则跳转过去
		</script>
	</body>
</html>
step2:执行indexController中的代码
package com.jd.index;

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

@Controller
public class IndexController {
	@RequestMapping("/index/index.do")
	public String index() {
		return "login";
	}
}
step3:	得到结果,与application中的前缀和后缀组合成路径,返回登录页面
application代码:
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/WEB-INF/view/"></property> <!--前缀-->
	<property name="suffix"  value=".jsp"></property> <!--后缀-->
</bean>

``
登录页面
在这里插入图片描述

登录代码:
<%@ page language="java" contentType="text/html; charset=Utf-8" pageEncoding="Utf-8"%>
<% 
	String path = request.getContextPath();
	String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
	request.setAttribute("path", basePath);
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
	<head>
		<title></title>
	</head>
	<body>
		<form action="${path}userinfo/login.do"  method="post">
			<input name="userName"/>
			<input type="password" name="password"/>
			<input type="submit" value="登陆"/>
		</form>
	</body>
</html>
step3: 点击登后,走到@RequestMapping的value="/userinfo/login.do"的Controller,并执行其中的代码,得到返回数据与application中的前缀、后缀组合,返回页面
UserInfoController代码:
package com.jd.userinfo;

import javax.servlet.http.HttpServletRequest;

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

@Controller
public class UserInfoController {
	
	//加上该注解会自动创建对象
	@Autowired
	 private IUserInfoService userInfoService;
	
	@RequestMapping(value="/userinfo/login.do",method=RequestMethod.POST)
	public String login(String userName,String password,HttpServletRequest request) {
		if (userInfoService.login(userName, password)) {//如果用户存在,login方法true,则会执行if里面的代码
			request.getSession().setAttribute("userName", userName);
			return "success";
		} 
		return "fail";
	}
}

返回页面,登录成功
在这里插入图片描述

执行Controller里面的代码时,处理数据采用MVC模式处理数据,代码如下:

	IUserInfoService代码:
package com.jd.userinfo;

public interface IUserInfoService {
	boolean login(String userName,String password);
}

IUserInfoDao代码:
package com.jd.userinfo;

public interface IUserInfoDao {
	boolean login(String userName,String password);
}

UserInfoService代码
package com.jd.userinfo.imp;
 	
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import com.jd.userinfo.IUserInfoDao;
import com.jd.userinfo.IUserInfoService;

@Service
public class UserInfoService implements IUserInfoService {
	@Autowired
	private IUserInfoDao userInfoDao ;
	
	public boolean login(String userName,String password) {
		return userInfoDao.login(userName, password);
	}
}
UserInfoDao代码
package com.jd.userinfo.imp;

import java.sql.ResultSet;
import java.sql.SQLException;

import org.springframework.stereotype.Repository;

import com.jd.tool.db.DBTool;
import com.jd.tool.db.IRowMapper;
import com.jd.userinfo.IUserInfoDao;

@Repository
public class UserInfoDao implements IUserInfoDao {
	public boolean login(String userName,String password) {
		String sql="select user_name from user_info where user_name=? and password=?";
		class RowMapper implements IRowMapper {
			boolean state;
			public void rowMapper(ResultSet resultSet) {
				try {
					if (resultSet.next()) {
						state=true;
					}
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}	
		}
		
		RowMapper rowMapper = new RowMapper();
		DBTool.select(sql, rowMapper,userName,password);
		return rowMapper.state;//返回数据到UserInfoController
	}
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值