maven搭建ssm项目讲解

第一部分:构建一个简单的maven工程

1.新建maven project

2.创建maven项目基本结构

3.项目命名与打包方式,这里选择打成war包

4.创建完项目后,但是缺失WEB-INF目录以及web.xml文件

解决方案: 右击该项目 —>  JAVA EE TOOLS —>  Generate Deployment Discripor Stub

此时,第一部分完成。maven项目结构搭建好。

第二部分 pom文件

  这里的pom配置文件,主要分三块,

    第一模块:<properties>用于定义全局变量,一般用来规定jar包版本

    第二模块:<dependency>用于定义所依赖的jar包,具体每个jar包的作用在下面配置文件中已经说明

      但这里需要注意:

       1.比如在日志jar包中,我们使用log4j和slf4j,需要的基本jar包有:log4j.jar, slf4j-api.jar, slf4j-log4j12.jar,但是我们只配置了slf4j-log4j12的依赖。是因为maven的传递依赖功能,当我们配置了slf4j-log4j12.jar的依赖,而slf4j-log4j12.jar会依赖log4j.jar以及slf4j-api.jar;如下图所示

        2.我们在servlet-api以及jsp-api中将作用域<scope>设置成provided表示我们仅在编译和测试阶段使用这两个jar包,在实际项目部署时我们不会使用该jar包,因为我们的项目最终会部署在tomcat容器里,而tomcat本身就包含了这两个jar包,为了避免jar包冲突,我们将这两个jar包的作用域设置为provided

    第三模块: <build>用于添加项目所依赖的插件。比如maven项目默认是使用jdk5编译的,在这里我们需要添加jdk1.8来编译。此外添加打包时跳过单元测试的maven插件

最后,我们配置完pom文件后,需要maven update一次,可以让我们主动添加所配置的依赖的jar包以及插件

<project xmlns="http://maven.apache.org/POM/4.0.0"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com</groupId>
	<artifactId>ssm-maven</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<packaging>war</packaging>

	<properties>
		<junit.version>4.12</junit.version>
		<slf4j.version>1.7.7</slf4j.version>
		<jstl.version>1.2</jstl.version>
		<jsp.version>2.0</jsp.version>
		<servlet.version>2.5</servlet.version>
		<jackson.version>2.8.5</jackson.version>
		<aspectj.version>1.5.4</aspectj.version>
		<spring.version>4.3.8.RELEASE</spring.version>
		<mybatis.version>3.3.1</mybatis.version>
		<spring.mybatis.version>1.3.0</spring.mybatis.version>
		<mysql.collection.version>5.1.36</mysql.collection.version>
		<aopalliance.version>1.0</aopalliance.version>
		<asm.version>5.0.1</asm.version>
		<dbcp.version>1.4</dbcp.version>
	</properties>

	<!-- 整个项目都需要依赖的jar包 -->
	<dependencies>
		<!-- 单元测试 -->
		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
		</dependency>

		<!-- 日志 -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${slf4j.version}</version>
		</dependency>

		<!-- Spring -->
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-core</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context-support</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-web</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-webmvc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-oxm</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-jdbc</artifactId>
			<version>${spring.version}</version>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-test</artifactId>
			<version>${spring.version}</version>
		</dependency>

		<!-- jackson -->
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-core</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-databind</artifactId>
			<version>${jackson.version}</version>
		</dependency>
		<dependency>
			<groupId>com.fasterxml.jackson.core</groupId>
			<artifactId>jackson-annotations</artifactId>
			<version>${jackson.version}</version>
		</dependency>

		<!-- aspectJ 写aop的语言,代替spring原有的aop -->
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjrt</artifactId>
			<version>${aspectj.version}</version>
		</dependency>
		<dependency>
			<groupId>org.aspectj</groupId>
			<artifactId>aspectjweaver</artifactId>
			<version>${aspectj.version}</version>
		</dependency>

		<!-- jsp & servlet -->
		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>jsp-api</artifactId>
			<version>${jsp.version}</version>
			<scope>provided</scope>
		</dependency>

		<dependency>
			<groupId>javax.servlet</groupId>
			<artifactId>servlet-api</artifactId>
			<version>${servlet.version}</version>
			<scope>provided</scope>
		</dependency>

		<!-- jstl -->
		<dependency>
			<groupId>jstl</groupId>
			<artifactId>jstl</artifactId>
			<version>${jstl.version}</version>
		</dependency>

		<!-- mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis</artifactId>
			<version>${mybatis.version}</version>
		</dependency>

		<!-- spring-mybatis -->
		<dependency>
			<groupId>org.mybatis</groupId>
			<artifactId>mybatis-spring</artifactId>
			<version>${spring.mybatis.version}</version>
		</dependency>

		<!-- mysql驱动包 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<version>${mysql.collection.version}</version>
		</dependency>

		<!-- aop联盟 -->
		<dependency>
			<groupId>aopalliance</groupId>
			<artifactId>aopalliance</artifactId>
			<version>${aopalliance.version}</version>
		</dependency>

		<!-- asm动态代理字节码生成 -->
		<dependency>
			<groupId>org.ow2.asm</groupId>
			<artifactId>asm</artifactId>
			<version>${asm.version}</version>
		</dependency>

		<!-- dbcp连接池 -->
		<dependency>
			<groupId>commons-dbcp</groupId>
			<artifactId>commons-dbcp</artifactId>
			<version>${dbcp.version}</version>
		</dependency>
	</dependencies>


	<build>
		<!-- 所有子项目都需要 -->
		<plugins>
			<!-- JDK版本 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>3.0</version>
				<configuration>
					<source>1.8</source>
					<target>1.8</target>
				</configuration>
			</plugin>
			<!-- maven插件 -->
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-surefire-plugin</artifactId>
				<configuration>
					<testFailureIgnore>true</testFailureIgnore>
					<!-- 跳过单元测试 -->
					<skip>true</skip>
				</configuration>
			</plugin>
		</plugins>
	</build>
</project>

第三部分 配置文件

1.配置web.xml文件

  web.xml文件中一共有四个组件

  第一个:监听器<listener>

<listener>
	<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

    作用:在web容器启动时,注册ServletContext监听器的实现类对象ContextLoaderListener,读取spring配置文件,创建Spring容器及将创建好的Spring容器对象放入到ServletContext的域属性空间中,确保整个应用中spring容器的唯一性。

   第二个:spring配置文件位置

<!-- spring主配置文件位置 -->
<context-param>
	<param-name>contextConfigLocation</param-name>
	<param-value>classpath:spring-config/spring-*.xml</param-value>
</context-param>

      作用:这里指定了spring的主配置文件,是ssm框架的总的容器。其中会注册数据源,事务管理,service,dao的注册等。但是要注意,这里的主配置文件和springmvc的配置文件是不同的,springmvc的配置文件中主要用于springmvc“四器”的注册,即映射器处理器,适配器处理器,处理器,视图解析器。在这里我们配置的是classpath下spring-config/spring-*.xml。所以我们在src/main/resources目录下创建spring-config目录,spring相关配置文件放在该目录下,且文件名命名以spring-开头。

  第三个:字符集过滤器

<filter>
  <filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name>
  <url-pattern>/*</url-pattern>
</filter-mapping>

设置请求和响应字符集为utf-8

  第四个: DispatchetrServlet中央调度器

<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:spring-config/springmvc-config.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> 

    在中央调度器里读取springmvc配置文件,即读取“四器”

综上,具体配置如下:

<?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_3_0.xsd" id="WebApp_ID" version="3.0">
	
	<!-- spring主配置文件位置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:spring-config/spring-*.xml</param-value>
	</context-param>
	
	<!-- 配置监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>
	
	<!-- 配置中央调度器 -->
	<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:spring-config/springmvc-config.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>characterEncodingFilter</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>characterEncodingFilter</filter-name>
  		<url-pattern>/*</url-pattern>
  	</filter-mapping>
</web-app>

2.spring主配置文件

注意:我们在web.xml中配置的spring文件应位于src/main/resources目录下的spring-config下以spring-开头的配置文件。所以我们在这里新建spring-context.xml主配置文件,并创建proerties-config目录下存放properties配置文件,如下图:

在spring-context.xml主配置文件中,我们需要配置六个组件

  第一个:引入properties配置文件

    我们一般将数据库连接四要素写入properties配置文件中,在spring文件中引入。所以此时,我们在上图properties-config目录下创建jdbc.properties文件,并将数据库连接四要素写入其中,如下图所示:

  在创建并配置好properties文件后,接下来就需要在spring中引入properties配置文件,如下:

<context:property-placeholder location="classpath:properties-config/*.properties"/>

  注意:我们一般写的是*.properties,表示引入properties目录下所有文件名以properties结尾的文件,这样方便以后创建其他properties配置文件并引入。一方面是因为代码简洁,另一方面也是因为<context:property-placeholder/>标签只能使用一次

  第二个:注册数据源(这里我们使用的是dbcp连接池)

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
	<property name="driverClassName" value="${jdbc.driver}"/>
	<property name="url" value="${jdbc.url}"/>
	<property name="username" value="${jdbc.username}"/>
	<property name="password" value="${jdbc.password}"/>
</bean>

注意:此时数据源中的字段,读取了jdbc.properties配置文件

第三个:注册SqlSessionFactoryBean(这个bean是mybatis的核心)

<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
	<property name="dataSource" ref="dataSource"/>
	<property name="mapperLocations" value="classpath:mapper-config/*-mapper.xml"/>
</bean>

主要有两个参数:dataSource数据源以及mapperLocations,mapperLocations指的是我们的mybatis的mapper映射文件的类路径

(对应的,我们的mapper.xml映射文件需要在src/main/resources下的mapper-config目录下,且以-mapper.xml文件结尾)

此外,还有一个参数:configLocation,这个参数是表示mybatis主配置文件的类路径,因为我们这里已经将sqlSessionFactoryBean放在了spring主配置文件中,所以mybatis的主配置文件可有可无。

  第四个:注册Mapper扫描器

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
	<property name="basePackage" value="com.tca.dao"/>
</bean>

该扫描器的作用是扫描Mapper接口,便于后面动态代理生成对应的sqlSession对象。有两个参数,第一个即sqlSessionFactoryBean,另一个是basepackage表示Mapper接口所在的包

以上四个配置了数据源等相关,已经可以实现增删查改操作了,接下来的两个组件是事务管理相关

  第五个:注册事务管理器

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
	<property name="dataSource" ref="dataSource"/>
</bean>

  第六个:配置事务注解驱动

<tx:annotation-driven transaction-manager="transactionManager"/>

注:spring的其他aop功能,在此不做演示。以上六个组件已经可以实现基本要求

综上,具体配置如下:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
	
	<!-- 读取jdbc.properties文件 -->
	<context:property-placeholder location="classpath:properties-config/*.properties"/>
	
	<!-- 注册dataSource -->
	<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
		<property name="driverClassName" value="${jdbc.driver}"/>
		<property name="url" value="${jdbc.url}"/>
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>
	</bean>
	
	<!-- 注册sqlSessionFactoryBean -->
	<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
		<property name="dataSource" ref="dataSource"/>
		<property name="mapperLocations" value="classpath:mapper-config/*-mapper.xml"/>
	</bean>
	
	<!-- 注册MapperScannerConfiguer -->
	<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean"/>
		<property name="basePackage" value="com.tca.dao"/>
	</bean>
	
	
	<!-- 配置AOP -->
	<!-- 注册TransactionManager -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
		<property name="dataSource" ref="dataSource"/>
	</bean>
	
	<!-- 注册事务注解驱动 -->
	<tx:annotation-driven transaction-manager="transactionManager"/>

			
</beans>

3.springmvc.xml

  在web.xml配置文件的中央调度器中,我们已经规定好springmvc的配置文件应放在src/main/resources下的spring-config目录下,且文件名为:springmvc-config.xml,配置文件的路径如下图:

springmvc配置文件主要是用于配置“四器”,在这里只用配置三个组件

  第一个: 静态资源处理器

<mvc:default-servlet-handler/>

  第二个:注解驱动

<mvc:annotation-driven/>

  第三个: Controller包扫描器

<context:component-scan base-package="com.tca.controller"/>	

以上,就可以满足基本需求。如下所示:

<beans xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:aop="http://www.springframework.org/schema/aop"
	xmlns:context="http://www.springframework.org/schema/context"
	xmlns:mvc="http://www.springframework.org/schema/mvc"
	xmlns:tx="http://www.springframework.org/schema/tx"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.0.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd
		http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
		http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd">
	
	<!-- 静态资源处理器 -->
	<mvc:default-servlet-handler/>
	
	<!-- 配置注解驱动 -->
	<mvc:annotation-driven/>
	
	<!-- controller扫描器 -->
	<context:component-scan base-package="com.tca.controller"/>	
</beans>

综上,ssm框架基本搭建完成。

4. 在类路径下配置并添加log4j.properties配置文件

log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=/opt/faeapp/logs/test/test.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%-8.8t] %-20.20c{1}[%-20.20M]:%-3L - %m%n
log4j.appender.file.MaxFileSize=50MB
log4j.appender.file.MaxBackupIndex=30
log4j.appender.file.encoding=UTF-8

log4j.appender.console=org.apache.log4j.ConsoleAppender 
log4j.appender.console.Target=System.out 
log4j.appender.console.layout=org.apache.log4j.PatternLayout 
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss.SSS} %-5p [%-8.8t] %-20.20c{1}[%-20.20M]:%-3L - %m%n

log4j.rootLogger=debug, console

综上,整个ssm框架基本搭建完成

接下来,我们写一个简单的用户注册的例子让ssm框架运行起来。

1.首先创建好数据库表t_student:

2.创建对应的Bean,放在com.tca.beans包内

package com.tca.beans;

import java.io.Serializable;

public class Student implements Serializable{

	private static final long serialVersionUID = 1L;
	
	private Integer sid;
	
	private String sname;
	
	private Integer sage;
	
	private String sgender;
	

	public Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	
	public Student(String sname, Integer sage, String sgender) {
		super();
		this.sname = sname;
		this.sage = sage;
		this.sgender = sgender;
	}

	public Integer getSid() {
		return sid;
	}

	public void setSid(Integer sid) {
		this.sid = sid;
	}

	public String getSname() {
		return sname;
	}

	public void setSname(String sname) {
		this.sname = sname;
	}

	public Integer getSage() {
		return sage;
	}

	public void setSage(Integer sage) {
		this.sage = sage;
	}

	public String getSgender() {
		return sgender;
	}

	public void setSgender(String sgender) {
		this.sgender = sgender;
	}

}

3.写对应的Mapper接口和mapper映射文件

  3.1 Mapper接口放在com.tca.dao包中

package com.tca.dao;

import org.springframework.stereotype.Component;

import com.tca.beans.Student;

@Component("com.tca.dao.IStudentDao")
public interface IStudentDao {
	
	/**
	 * 
	 * @param sname
	 * @return
	 */
	int countBySname(String sname);
	
	/**
	 * 
	 * @param student
	 */
	void insertStudent(Student student);
	
	
}

  3.2 mapper映射文件放在mapper-config目录下

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.tca.dao.IStudentDao">
	
	<select id="countBySname" parameterType="java.lang.String" resultType="java.lang.Integer">
		select count(1) from t_student t where t.sname = #{sname}	
	</select>
	
	<insert id="insertStudent" parameterType="com.tca.beans.Student">
		insert into t_student (sname, sage, sgender) values (#{sname}, #{sage}, #{sgender})
	</insert>
	
</mapper>

以上dao层已经全部写好。

4.Controller层

注意,因为本例业务逻辑比较简单,因此,没有单独写Service层

package com.tca.controller;

import org.apache.log4j.Logger;
import org.slf4j.impl.Log4jLoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import com.tca.beans.Student;
import com.tca.dao.IStudentDao;

@Controller
@RequestMapping("/register")
public class RegisterController {
	
	@Autowired
	private IStudentDao studentDao;
	
	private Logger logger = Logger.getLogger(RegisterController.class);
	
	/**
	 * 跳转到注册页面
	 * @return
	 */
	@RequestMapping("/toRegisterPage")
	public ModelAndView toRegisterPage(){
		logger.info("准备跳转到注册界面..");
		return new ModelAndView("/jsp/register.jsp");
	}
	
	/**
	 * 注册
	 * @param student
	 * @return
	 */
	@RequestMapping("/doRegister")
	public ModelAndView doRegister(Student student){
		ModelAndView mv = new ModelAndView();
		
		//判断用户名是否使用
		String sname = student.getSname();
		if (studentDao.countBySname(sname) > 0){
			logger.info("该用户名已经注册..");
			mv.addObject("errorMsg", "该用户名已使用");
			mv.setViewName("/jsp/register.jsp");
			return mv;
		}
		
		//注册成功,则跳转到注册成功页面
		studentDao.insertStudent(student);
		logger.info("注册成功..");
		mv.addObject("student", student);
		mv.setViewName("/jsp/welcome.jsp");
		return mv;
	}

}

5.最后,我们在WEB-INF目录下创建jsp目录,并创建基本的页面

注意:因为本例比较简单,所以没有实现前后端分离,我们将前端页面以jsp的方式展示

分别创建和添加register.jsp注册页面,welcome.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 charset="utf-8">
		<title>用户注册</title>
	</head>
	<body>
		<form method="post" action="doRegister">
			<table align="center" width="800px" border="2px">
				<tr align="center" valign="center">
					<th height="30px" colspan="2">用户注册</th>
				</tr>
				<tr align="center" valign="center">
					<td height="30px" width="15%">用户名</td>
					<td align="left"><input type="text" name="sname" size="50px"></td>${errorMsg}
				</tr>
				<tr align="center" valign="center">
					<td height="30px" width="15%">密码</td>
					<td align="left"><input type="password" name="password" size="50px"></td>
				</tr>
				<tr align="center" valign="center">
					<td height="30px" width="15%">密码确认</td>
					<td align="left"><input type="password" name="password_confirm" size="50px"></td>
				</tr>
				<tr align="center" valign="center">
					<td height="30px" width="15%">生日</td>
					<td align="left"><input type="text" name="birthday" size="50px"></td>
				</tr>
				<tr align="center" valign="center">
					<td height="30px" width="15%">年龄</td>
					<td align="left"><input type="text" name="sage" size="50px"></td>
				</tr>
				<tr align="center" valign="center">
					<td height="30px" width="15%">性别</td>
					<td align="left">
						男<input type="radio" name="sgender" value="male">&nbsp;
						女<input type="radio" name="sgender" value="female">&nbsp;
						保密<input type="radio" name="sgender" value="unknown">&nbsp;
					</td>
				</tr>
				<tr align="center" valign="center">
					<td height="60px" width="15%">你感兴趣</td>
					<td align="left">
						html<input type="checkbox" name="interest1">&nbsp;
						css<input type="checkbox" name="interest1">&nbsp;
						JS<input type="checkbox" name="interest1">&nbsp;
						Jquery<input type="checkbox" name="interest1">&nbsp;</br>
						Ajax<input type="checkbox" name="interest1">&nbsp;
						Json<input type="checkbox" name="interest1">&nbsp;
						Servlet<input type="checkbox" name="interest1">&nbsp;
						JSP<input type="checkbox" name="interest1">&nbsp;
					</td>
				</tr>
				<tr align="center" valign="center">
					<td height="120px" width="15%">你感兴趣</td>
					<td align="left">
						<select name="interest2" size="7" multiple>
							<option value=0>请选择</option>
							<option value=34>html</option>
							<option value=11>css</option>
							<option value=50>JS</option>
							<option value=35>Jquery</option>
							<option value=62>Ajax</option>
							<option value=44>Json</option>
							<option value=44>Servlet</option>
							<option value=44>JSP</option>
						</select>	
					</td>
				</tr>
				<tr align="center" valign="center">
					<td height="30px" width="15%">你来自哪</td>
					<td align="left">
						<select name="interest" size="1">
							<option value=0>请选择</option>
							<option value=34 selected>安徽</option>
							<option value=11>北京</option>
							<option value=50>重庆</option>
							<option value=35>福建</option>
							<option value=62>甘肃</option>
							<option value=44>广东</option>
							<option value=45>广西</option>
							<option value=52>贵州</option>
							<option value=46>海南</option>
							<option value=13>河北</option>
							<option value=23>黑龙江</option>
							<option value=41>河南</option>
							<option value=42>湖北</option>
							<option value=43>湖南</option>
							<option value=32>江苏</option>
							<option value=36>江西</option>
							<option value=22>吉林</option>
							<option value=21>辽宁</option>
							<option value=64>宁夏</option>
							<option value=15>内蒙古</option>
							<option value=63>青海</option>
							<option value=31>上海</option>
							<option value=14>山西</option>
							<option value=37>山东</option>
							<option value=51>四川</option>
							<option value=61>陕西</option>
							<option value=12>天津</option>
							<option value=54>西藏</option>
							<option value=65>新疆</option>
							<option value=53>云南</option>
							<option value=33>浙江</option>
							<option value=71>台湾</option>
							<option value=81>香港</option>
							<option value=82>澳门</option>
							<option value=0>其他</option>
						</select>
					</td>
				</tr>
				<tr align="center" valign="center">
					<td height="150px" width="15%">自我介绍</td>
					<td align="left">
						<textarea name="self_introduction" rows="8" cols="80">
						</textarea>
					</td>
				</tr>
				<tr align="center" valign="center">
					<td height="30px" colspan="2">
						<input type="submit">&nbsp;&nbsp;&nbsp;
						<input type="reset">&nbsp;&nbsp;&nbsp;
						<input type="button" value=" ok ">
					</td>
			</table>
		</form>	
		
	</body>
</html>
<%@ 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 charset="utf-8">
		<title>欢迎界面</title>
	</head>
	<body>
		<h3>你好,${student.sname}!</h3><br>
		<h3>恭喜您,注册成功!</h3>
	</body>
</html>

以上,例子也搭建完毕。接下来使用tomcat运行该项目。

接下来,看效果

1.在浏览器输入url:http://localhost:8080/ssm-maven/register/toRegisterPage

2.进入注册页面,并填写,提交

3.注册成功,进入欢迎页面

至此,整个框架搭建成功并验证成功!

猜你喜欢

转载自blog.csdn.net/tca0819/article/details/83957276