The Maven Travel(3)--Creating Dynamic Web Project and learning modular development

本文介绍如何使用IntelliJ IDEA和Maven搭建模块化的Dynamic Web Project,涵盖DAO层、Service层和Controller层的设计与实现,并提供详细的代码示例。

经过一天的准备,笔者做好了利用IDEA进行Dynamic Web Project的开发尝试,写这一系列的文章的主要目的之一是想尽快熟悉IDEA这个开发环境。就现在的个人感觉而言,IDEA较之Eclipse/RapidClipse的优势在于给了我们更多的开发自由和赋予个性化的开发方式,还有便是性能上的优势,IDEA不像Eclipse/RapidClipse的臃肿。
现在进入今天的主题(标题用英文的原因是笔者准备着IELTS\TOEFL,顺便练手),如题所说今天来做前面提到Dynamic Web Project(动态网页项目)以及modular development(模块开发)。

1.Let’s talking about modular development

作为没有经过实际商业项目、开源项目或科研项目等等的开发来说,首先做过的Dynamic Web Project或许多是从MVC Struts2(and Servlet)->SpringMVC,从MySQL(cmd command line)->JDBC(java)->Mybatis/Hibernate,这条路径走过来的半吊子开发(笔者就是经历过这个过程,所以笔者认为自己是一个不合格的程序员,因为半吊子)是很难脱出在一个Dynamic Web Project中就整一个SpringMVC框架的开发,一旦开发好的项目维护起来很麻烦,先不说版本控制的问题,光就是说updating module or adding new module就够折腾了,浪费时间和精力。
现在我们试着使用Maven来改变或者脱出这个令人头疼的困境。

2.Let’s begining

笔者这次准备了three modular development parts,它们最终整合起来就是一个完整的Dynamic Web Project。

2.1userDao module part

userDao工程目录
这是一个maven建立的没有选择archetype module的简单工程,可以参考我上一篇文章的建立方式:The Maven Travel(2)–Using the IDEA to create maven project
这部分的maven project和下一部分的UserService project主要是建立MVC(module-view-controller)中的Module层,主要的责任是负责封装应用的数据和业务逻辑。
其中UserDao是负责应用数据的封装(DAO全称:Data Access Object,主要是做数据持久化–Data Presistence)和Java对象的定义(Entity,或者是pojo–Plain Old Java Object)。因为此处我们必须和数据库打交道,所以我们需要使用到Java和数据库访问的ORM(Object Relationship Mapping)框架,这里笔者选择了Mybatis这个不完全的ORM框架(因为它较之Hibernate更加灵活)。

Project details:

User.class
package com.unicorn.user.entity;

import lombok.*;

import java.io.Serializable;

/**
 * @author Unicorn
 * @descrition 定义一个用户对象,通过maven的构建方式成为这个web project dao层的独立部分
 * @created 2018-04-01-12:55 PM
 */

@NoArgsConstructor//实现无参构造器
@ToString(exclude = {"id"})//JavaBean规范:重载tostring方法
@EqualsAndHashCode
public class User implements Serializable {

    /**
     * JavaBean规范:实现getter and setter
     * 在这里使用lombok的注解简化冗余的代码
     */
    @Getter @Setter
    private Integer id;//用户的编号
    @Getter @Setter
    private String usrName;//用户名称
    @Getter @Setter
    private String password;//登录密码

}
UserDao.class
package com.unicorn.user.dao;

import com.unicorn.user.entity.User;

/**
 * @author Unicorn
 * @descrition user DAO层接口
 * @created 2018-04-01-1:17 PM
 */

public interface UserDao {
    public User login(User usr);
}

这里是使用Interface’s Mapper的方式进行数据库相关操作,具体可看笔者之前写的MyBatis系列文章。

UserMapper.xml
<?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.unicorn.user.dao.UserDao">
    <select id="login" parameterType="User" resultType="User">
        SELECT * FROM
          t_user
        WHERE
          usrName=#{usrName} AND password=#{password}
    </select>
</mapper>
log4j.properties
#log4j的配置
log4j.rootLogger=DEBUG, Console  

#Console
log4j.appender.Console=org.apache.log4j.ConsoleAppender  
log4j.appender.Console.layout=org.apache.log4j.PatternLayout  
log4j.appender.Console.layout.ConversionPattern=%d [%t] %-5p [%c] - %m%n  

log4j.logger.java.sql.ResultSet=INFO  
log4j.logger.org.apache=INFO  
log4j.logger.java.sql.Connection=DEBUG  
log4j.logger.java.sql.Statement=DEBUG  
log4j.logger.java.sql.PreparedStatement=DEBUG  
mybatis-config.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <package name="com.unicorn.user.entity"/>
    </typeAliases>
</configuration>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.unicorn.userDaoPart</groupId>
    <artifactId>UserDao</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!--Comments:项目编码-->
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!--Comments:这里主要是在运行maven相关命令进行打包时有大概率会出现package下的.xml文件不会被compile进去的问题-->
    <build>
        <resources>
            <resource><!--Comments:Avoiding to ignore the xml's formatter-->
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <!--Comments:让maven在compile时包含入package下的.xml文件-->
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>
    <!--Comments:另一种解决办法是放到resource目录下-->

    <!--Comments:添加依赖-->
   <dependencies>
       <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
       <dependency>
           <groupId>org.mybatis</groupId>
           <artifactId>mybatis</artifactId>
           <version>3.4.6</version>
       </dependency>

       <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
       <dependency>
           <groupId>mysql</groupId>
           <artifactId>mysql-connector-java</artifactId>
           <version>5.1.36</version><!--Comments:这里的版本不要选6.0+的版本会发生数据库连接失败的问题-->
       </dependency>

       <!-- https://mvnrepository.com/artifact/log4j/log4j -->
       <dependency>
           <groupId>log4j</groupId>
           <artifactId>log4j</artifactId>
           <version>1.2.17</version>
       </dependency>

       <!-- https://mvnrepository.com/artifact/junit/junit -->
       <dependency>
           <groupId>junit</groupId>
           <artifactId>junit</artifactId>
           <version>4.12</version>
           <scope>test</scope>
       </dependency>

       <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
       <dependency><!--Comments:笔者前面的文章有提到过:https://blog.youkuaiyun.com/qq_32013279/article/details/79129575-->
           <groupId>org.projectlombok</groupId>
           <artifactId>lombok</artifactId>
           <version>1.16.20</version>
           <scope>provided</scope>
       </dependency>

   </dependencies>
</project>

2.2userService module part

这里写图片描述
这里主要是做业务逻辑设计(业务逻辑模块的应用设计),通常是先设计interface再做implements,implements中主要是调用DAO中的interfaces来完成整个的业务逻辑。
建立这个project也是不要使用maven中archetype module。

Project details

UserService.interface
package com.unicorn.user.service;

import com.unicorn.user.entity.User;

/**
 * @author Unicorn
 * @descrition user service层接口
 * @created 2018-04-01-6:23 PM
 */
public interface UserService {
    public User login(User usr);//这里和UserDao的联系就出现了,需要对UserDao进行依赖,要在pom.xml中注入相应的dependency
}
UserServiceImpl.class
package com.unicorn.user.service.impl;

import com.unicorn.user.dao.UserDao;
import com.unicorn.user.entity.User;
import com.unicorn.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * @author Unicorn
 * @descrition user service接口实现
 * @created 2018-04-01-6:24 PM
 */
@Service("userService")
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    public User login(User user) {
        return userDao.login(user);
    }
}
applicationContext.xml(Spring的配置)
<?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:p="http://www.springframework.org/schema/p"  
    xmlns:aop="http://www.springframework.org/schema/aop"   
    xmlns:context="http://www.springframework.org/schema/context"  
    xmlns:jee="http://www.springframework.org/schema/jee"  
    xmlns:tx="http://www.springframework.org/schema/tx"  
    xsi:schemaLocation="    
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-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/context http://www.springframework.org/schema/context/spring-context-4.0.xsd  
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd  
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">    

    <!--Comments:自动扫描 -->
    <context:component-scan base-package="com.unicorn.user.service" />

    <!--Comments:配置数据源 -->
    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
        <property name="url" value="jdbc:mysql://localhost:3306/db_maven?characterEncoding=utf8"/>
        <property name="username" value="xxxx"/><!--Comments:这里隐去了笔者的MySQL的相关隐私配置 -->
        <property name="password" value="xxxxx"/><!--Comments:日后会换成properties的读取方式来获取数据库的相关配置进行连接 -->
    </bean>

    <!--Comments:配置mybatis的sqlSessionFactory -->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <!-- 自动扫描mappers.xml文件 -->
        <property name="mapperLocations" value="classpath:com/unicorn/user/mappers/*.xml"></property>
        <!--Comments:mybatis配置文件,由于包含了前面的UserDao所以可以进行访问 -->
        <property name="configLocation" value="classpath:mybatis-config.xml"></property>
    </bean>

    <!--Comments:DAO接口所在包名,Spring会自动查找其下的类 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.unicorn.user.dao" />
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

    <!--Comments:(事务管理)transaction manager, use JtaTransactionManager for global tx -->
    <bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!--Comments:配置事务通知属性 -->  
    <tx:advice id="txAdvice" transaction-manager="transactionManager">  
        <!--Comments:定义事务传播属性 -->  
        <tx:attributes>  
            <tx:method name="insert*" propagation="REQUIRED" />  
            <tx:method name="update*" propagation="REQUIRED" />  
            <tx:method name="edit*" propagation="REQUIRED" />  
            <tx:method name="save*" propagation="REQUIRED" />  
            <tx:method name="add*" propagation="REQUIRED" />  
            <tx:method name="new*" propagation="REQUIRED" />  
            <tx:method name="set*" propagation="REQUIRED" />  
            <tx:method name="remove*" propagation="REQUIRED" />  
            <tx:method name="delete*" propagation="REQUIRED" />  
            <tx:method name="change*" propagation="REQUIRED" />  
            <tx:method name="check*" propagation="REQUIRED" />  
            <tx:method name="get*" propagation="REQUIRED" read-only="true" />  
            <tx:method name="find*" propagation="REQUIRED" read-only="true" />  
            <tx:method name="load*" propagation="REQUIRED" read-only="true" />  
            <tx:method name="*" propagation="REQUIRED" read-only="true" />  
        </tx:attributes>  
    </tx:advice>  

    <!--Comments:配置事务切面 -->  
    <aop:config>  
        <aop:pointcut id="serviceOperation"  
            expression="execution(* com.unicorn.user.service.*.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation" />  
    </aop:config>  


</beans>
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<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.unicorn.userDaoPart</groupId>
    <artifactId>UserService</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>com.unicorn.userDaoPart</groupId>
            <artifactId>UserDao</artifactId>
            <version>1.0-SNAPSHOT</version><!--Comments:It is great importing!-->
            <!--Comments:It being ingored, the maven wouldn't inject its dependencies.-->
        </dependency>

        <!--Comments:spring framework dependencies-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-core</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-beans</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-tx</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context-support</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aop</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-aspects</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>


        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>4.1.7.RELEASE</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis-spring -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>1.3.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

    </dependencies>
</project>

2.3userWeb module part

这里写图片描述
这里主要就是controller层,主要是用来获取用户的输入和输出以及视图的展示,专业点说就是负责具体业务模块的流程控制。它主要是调用service层的interfaces来控制业务流程的行进,针对具体的、不同的业务逻辑会有不同的controller。
这一块的project的创建和上面的两个是不太一样的,下面先细讲下建立过程:

IDEA构建web project

方式1

这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
可以看到刚建立的project和我们之前看到的典型的maven project是不一样的,这需要我们手动加工一下。
这里写图片描述
这里写图片描述
这样就可以啦!
在deployment阶段我们需要配置Tomcat:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
apply一下。
这里写图片描述

方式2

这里写图片描述
不选create from archetype
这里写图片描述
这里写图片描述
这里写图片描述
这里缺少webapp,需要我们手动修改添加web的module。
这里写图片描述
这里写图片描述
这里是web的名称而且路径并不在\src\main\下需要我们再次修改。
这里写图片描述
还要修改下面的路径。
这里写图片描述
添加index.jsp
这里写图片描述
大功告成!

Project details

UserController.class
package com.unicorn.user.controller;

import com.unicorn.user.entity.User;
import com.unicorn.user.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

/**
 * @author Unicorn
 * @descrition user controller视图控制器
 * @created 2018-04-01-6:43 PM
 */
@Controller
@RequestMapping("/userDaoPart")
public class UserController {

    @Autowired
    private UserService userService;

    @RequestMapping("/login")
    public String login(User usr, HttpServletRequest request){
        User resultUsr = userService.login(usr);
        if(null == resultUsr){
            request.setAttribute("usr", usr);
            request.setAttribute("errMsg", "账号或密码错误!");
            return "index";//index.jsp
        } else {
            HttpSession session = request.getSession();
            session.setAttribute("curUsr", resultUsr);
            return "redirect:/success.jsp";
        }
    }

}
spring-mvc.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:p="http://www.springframework.org/schema/p"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:jee="http://www.springframework.org/schema/jee"
       xmlns:tx="http://www.springframework.org/schema/tx"
       xsi:schemaLocation="
        http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-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/context http://www.springframework.org/schema/context/spring-context-4.0.xsd
        http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-4.0.xsd
        http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd">

    <!-- 使用注解的包,包括子集 -->
    <context:component-scan base-package="com.unicorn.user.controller" />

    <!-- 视图解析器 -->
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/" />
        <property name="suffix" value=".jsp"></property>
    </bean>

</beans>
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_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>MyBatisPro05</display-name>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>

  <!-- Spring配置文件 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:applicationContext.xml</param-value>
  </context-param>
  <!-- 编码过滤器 -->
  <filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <async-supported>true</async-supported><!--Comments:3.0's new charateristic-->
    <init-param>
      <param-name>encoding</param-name>
      <param-value>UTF-8</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  <!-- Spring监听器 -->
  <listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <!-- 添加对springmvc的支持 -->
  <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-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
    <async-supported>true</async-supported>
  </servlet>
  <servlet-mapping>
    <servlet-name>springMVC</servlet-name>
    <url-pattern>*.do</url-pattern>
  </servlet-mapping>
</web-app>
pom.xml
<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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.unicorn.userDaoPart</groupId>
  <artifactId>UserWeb</artifactId>
  <packaging>war</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>UserWeb Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <!--Comments:adding servlet support-->
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.0</version>
      <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>javax.servlet.jsp-api</artifactId>
      <version>2.3.1</version>
      <scope>provided</scope>
    </dependency>

    <!--Comments:adding jstl support-->
    <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

    <!--Comments:adding springframework support-->
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-core</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-beans</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-tx</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-context-support</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-web</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>

    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-webmvc</artifactId>
      <version>4.1.7.RELEASE</version>
    </dependency>

    <!--Comments:adding junit support-->
    <!-- https://mvnrepository.com/artifact/junit/junit -->
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>com.unicorn.userDaoPart</groupId>
      <artifactId>UserService</artifactId>
      <version>1.0-SNAPSHOT</version>
    </dependency>

  </dependencies>
  <build>
    <finalName>UserWeb</finalName>
  </build>
</project>
index.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>login web</title>
</head>
<body>
<form action="${pageContext.request.contextPath }/userDaoPart/login.do" method="post">
    userName:<input type="text" name="usrName" value="${usr.usrName }"/><br/>
    password:<input type="password" name="password" value="${usr.password }"><br/>
    <input type="submit" value="login"/><font color="red">${errMsg }</font>
</form>
</body>
</html>
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">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>welcome</title>
</head>
<body>
欢迎:${curUsr.usrName }
</body>
</html>

MySQL

这里写图片描述

Running the Dynamic Web Projecet

这里写图片描述
这里写图片描述
这里写图片描述
通过maven的帮助,我们可以更好地分组件进行模块开发,只要通过maven打包并把对象的依赖加入就可以完成整个项目,这对于项目维护带来的便利不言自明啦!
今天就到这了!谢谢各位!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值