1)Windows 7 旗舰版
2)JDK 1.8.0_131
3)Eclipse Java EE IDE for Web Developers Version: Neon.3 Release (4.7.3)
4)Tomcat 8.5
maven的下载地址:http://maven.apache.org/download.cgi
解压后放在D盘最好,因为我C盘安装的固态,所以我放在C盘了
配置maven环境变量,
在环境变量中,新增系统变量名:MAVEN_HOME,变量值:C:\apache-maven-3.5.3C:\apache-maven-3.5.3
在Path中追加:%MAVEN_HOME%\bin;
在命令行窗口中输入:mvn –v,如果看见下图则说明maven安装配置完毕
点击Installations节点,添加maven runtime
我的已经配置过了。所以显示名字重复错误。
创建出的maven项目如下图
在eclipse中设置Server为Tomcat,注意JRE设置为安装的JDK的jre
添加tomcat
在项目上右键,查看项目信息
默认的Dynamic Web Module为2.3,使用Tomcat 8.5,需要修改为3.1
修改方法:
① maven工程所在目录下org.eclipse.wst.common.project.facet.core.xml
将下图的2.3改成3.1
② maven工程下的web.xml文件修改为
③ pom.xml文件中修改build节点,添加如下内容
org.apache.maven.plugins
maven-compiler-plugin
1.8
④ 修改后,在项目上右键,找到Maven属性下的Update Project,点击
⑤ 选择该项目进行更新,如果怕不能强制更新,可以勾选Force Update of Snapshots/Releases
⑥ 点击OK后更新maven项目,再观察项目属性,Module已经变为3.1
4.0.0
cn.temptation
ssm
war
0.0.1-SNAPSHOT
ssm Maven Webapp
http://maven.apache.org
4.3.8.RELEASE
org.springframework
spring-core
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-web
${spring.version}
org.springframework
spring-webmvc
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-tx
${spring.version}
org.aspectj
aspectjrt
1.8.0
org.aspectj
aspectjweaver
1.8.0
org.mybatis
mybatis
3.3.0
mysql
mysql-connector-java
5.1.26
com.alibaba
druid
1.0.20
org.mybatis
mybatis-spring
1.2.3
javax.servlet
jstl
1.2
log4j
log4j
1.2.17
org.slf4j
slf4j-api
1.7.21
junit
junit
3.8.1
test
ssm
org.apache.maven.plugins
maven-compiler-plugin
1.8
因为服务端maven项目的标准结构有四个子包:src/main/java、src/main/resources、src/test/java、src/test/resources,这里缺少了src/test/resources,所以手动补上。
在项目中新建Source Folder
创建src/test/resources目录后,工程如下图所示
UserDao.java
package cn.temptation.dao;
import cn.temptation.domain.User;
public interface UserDao {
public abstract User findByUsername(String username);
}
UserMapper.xml
User.java
package cn.temptation.domain;
public class User {
private Integer userid;
private String username;
private String password;
// 构造函数
public User() {
super();
}
public User(Integer userid, String username, String password) {
super();
this.userid = userid;
this.username = username;
this.password = password;
}
// 成员方法
public Integer getUserid() {
return userid;
}
public void setUserid(Integer userid) {
this.userid = userid;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
UserController.java
package cn.temptation.web;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
import cn.temptation.dao.UserDao;
import cn.temptation.domain.User;
@Controller
@RequestMapping(value = "/user")
public class UserController {
@Resource
private UserDao userDao;
@RequestMapping("/view")
public String view() {
return "main/login";
}
@RequestMapping("/indexview")
public String index() {
return "main/index";
}
@RequestMapping(value = "/login", method = RequestMethod.POST)
public ModelAndView login(User model, HttpSession session) {
User user = userDao.findByUsername(model.getUsername());
if (user == null || !user.getPassword().equals(model.getPassword())) {
return new ModelAndView("redirect:/login.jsp");
} else {
session.setAttribute("user", user);
ModelAndView mav = new ModelAndView();
mav.setViewName("index");
return mav;
}
}
}
log4j.properties
#USE THIS SETTING FOR OUTPUT MYBATIS`s SQL ON THE CONSOLE
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
spring-mvc.xml
spring-mybatis.xml
spring-tx.xml
web.xml
index.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
主页
欢迎,${user.username }
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
登录
十月 04, 2018 9:32:48 下午 org.apache.tomcat.util.digester.SetPropertiesRule begin
警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} Setting property 'source' to 'org.eclipse.jst.jee.server:SSML' did not find a matching property.
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server version: Apache Tomcat/8.5.29
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server built: Mar 5 2018 13:11:12 UTC
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Server number: 8.5.29.0
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Name: Windows 7
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: OS Version: 6.1
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Architecture: amd64
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Java Home: C:\Program Files\Java\jre1.8.0_161
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Version: 1.8.0_161-b12
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: JVM Vendor: Oracle Corporation
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_BASE: E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: CATALINA_HOME: D:\apache-tomcat-8.5.29
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.base=E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dcatalina.home=D:\apache-tomcat-8.5.29
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dwtp.deploy=E:\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\wtpwebapps
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Djava.endorsed.dirs=D:\apache-tomcat-8.5.29\endorsed
十月 04, 2018 9:32:48 下午 org.apache.catalina.startup.VersionLoggerListener log
信息: Command line argument: -Dfile.encoding=UTF-8
十月 04, 2018 9:32:48 下午 org.apache.catalina.core.AprLifecycleListener lifecycleEvent
信息: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [C:\Program Files\Java\jre1.8.0_161\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/Program Files/Java/jre1.8.0_161/bin/server;C:/Program Files/Java/jre1.8.0_161/bin;C:/Program Files/Java/jre1.8.0_161/lib/amd64;C:\ProgramData\Oracle\Java\javapath;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Program Files\WIDCOMM\Bluetooth Software\;C:\Program Files\WIDCOMM\Bluetooth Software\syswow64;;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\Java\jdk1.8.0_161\bin;C:\Program Files\Java\jre1.8.0_161\bin;C:\apache-maven-3.5.3\bin;C:\Users\Administrator\eclipse\jee-oxygen\eclipse;;.]
十月 04, 2018 9:32:48 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["http-nio-8080"]
十月 04, 2018 9:32:49 下午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
十月 04, 2018 9:32:49 下午 org.apache.coyote.AbstractProtocol init
信息: Initializing ProtocolHandler ["ajp-nio-8009"]
十月 04, 2018 9:32:49 下午 org.apache.tomcat.util.net.NioSelectorPool getSharedSelector
信息: Using a shared selector for servlet write/read
十月 04, 2018 9:32:49 下午 org.apache.catalina.startup.Catalina load
信息: Initialization processed in 1249 ms
十月 04, 2018 9:32:49 下午 org.apache.catalina.core.StandardService startInternal
信息: Starting service [Catalina]
十月 04, 2018 9:32:49 下午 org.apache.catalina.core.StandardEngine startInternal
信息: Starting Servlet Engine: Apache Tomcat/8.5.29
十月 04, 2018 9:32:53 下午 org.apache.jasper.servlet.TldScanner scanJars
信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
十月 04, 2018 9:32:56 下午 org.apache.jasper.servlet.TldScanner scanJars
信息: At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
十月 04, 2018 9:32:56 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["http-nio-8080"]
十月 04, 2018 9:32:56 下午 org.apache.coyote.AbstractProtocol start
信息: Starting ProtocolHandler ["ajp-nio-8009"]
十月 04, 2018 9:32:56 下午 org.apache.catalina.startup.Catalina start
信息: Server startup in 6730 ms