今天讲的是如何用idea创建一个JavaWeb的Maven SSM项目并且实现简单的登陆功能~(项目源码在最后,需要的可以自行下载)
本文章过于详细过于面向小白,并且在讲解SSM项目的搭建过程中涉及到了小白们极有可能遇到的Idea的坑!
文章比较啰嗦基本上所有的步骤还有常见问题都会列出来,希望大家能耐心看下去~
首先简单的介绍一下SSM框架
SSM框架,是Spring + Spring MVC + MyBatis的缩写,这个是继SSH之后,目前比较主流的Java EE企业级框架,适用于搭建各种大型的企业级应用系统。
多的不说,开始搭建~
首先把数据库的sql文件导入到你的数据库吧(Mysql)
链接:https://pan.baidu.com/s/1FL013yQ3SLG0x_d5bAKKqw
提取码:59bu
接下来开始项目搭建,点开Idea 创建新项目
选中maven勾选框框,选中webapp模板,然后Next!
然后定义maven坐标
注: GroupID 是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。
ArtifactID是项目的唯一的标识符,实际对应项目的名称,就是项目根目录的名称。
Version指定了项目的当前版本,SNAPSHOT意为快照,说明该项目还处于开发中,是不稳定的版本。
然后设置maven的目录 setting.xml文件的目录 maven库的目录 Next!
然后设置文件夹名称和物理路径 (基本可以直接Finish )
可以直接Close 右下角选中Enable Auto-Import (设置自动导入)
来看看创建完成后的目录结构~
到这一步也许很多小白疑问为什么创建的web项目没有java文件夹,这里我详细说一下,小伙伴们做好笔记!!
首先右键main→New→Directory 然后取名为java(既然没有,那我们就手动建一个!)
创建完后 按照下图设置 然后apply,然后java文件夹变为蓝色就ok了,用来存放java代码
接下来可以直接部署到Tomcat看看成果,按照我的步骤一步步来~
然后按照下图设置,仔细看
继续看图~
然后选择带exploded的这个包
确认没问题后Apply→OK
然后直接点击启动看看
等待项目启动,会自动跳到Hello,World页面,那就是没问题了,接下来进行后面的操作
我比较习惯先把项目结构做好,现在开始创建包~
名称什么的自己起,我的结构如下~
接下来在main下创建一个resources文件夹存放配置文件,操作方式跟上面创建java文件夹一模一样,不同的是选择Resourcess然后Apply→ OK,看图
接下来添加我们要用的依赖,点击pom.xml文件,按照我的设置就行,里面没用的我都删了,还是我这样比较简洁~
4.0.0
com.6mai.test
ssm
1.0-SNAPSHOT
war
ssm
http://www.example.com
3.1.0
2.3.1
1.2
3.4.6
1.3.2
4.3.13.RELEASE
5.1.40
1.2.17
javax.servlet
javax.servlet-api
${servlet.version}
provided
javax.servlet.jsp
javax.servlet.jsp-api
${jsp.version}
provided
javax.servlet
jstl
${jstl.version}
org.mybatis
mybatis
${mybatis.version}
org.mybatis
mybatis-spring
${mybatis-spring.version}
org.springframework
spring-aspects
${spring.version}
org.springframework
spring-aop
${spring.version}
org.springframework
spring-context
${spring.version}
org.springframework
spring-core
${spring.version}
org.springframework
spring-expression
${spring.version}
org.springframework
spring-jdbc
${spring.version}
org.springframework
spring-tx
${spring.version}
org.springframework
spring-webmvc
${spring.version}
mysql
mysql-connector-java
${mysql.version}
log4j
log4j
${log4j.version}
src/main/java
**/*.properties
**/*.xml
false
然后修改web.xml文件的配置(有的人可能用Idea生成项目时发现生成的web.xml没有头文件,不过问题不大,复制我的就行,关于解决没有头文件的问题可以点击这里:解决Idea创建web项目web.xml没有头文件的问题)
manager
encodingFilter
org.springframework.web.filter.CharacterEncodingFilter
encoding
UTF-8
forceEncoding
true
encodingFilter
/*
org.springframework.web.context.ContextLoaderListener
contextConfigLocation
classpath:applicationContext.xml
springmvc
org.springframework.web.servlet.DispatcherServlet
contextConfigLocation
classpath:springmvc.xml
1
springmvc
/
index.jsp
接下来把各种配置文件都添加到main下的resources文件夹中(不是一次性添加所有,这里为了方便我先都展示出来,部分配置文件里指向的类或者文件在接下来的步骤中添加进去),由于文件过多,而且基本都是通用的配置这里就不一一写出来,太占位置,spring、springMVC、mybatis包括数据库等文件都在这里,大家可以下载下来,基本上都是通用的,没什么特别的操作~
链接:https://pan.baidu.com/s/18xv2EXbihXEXZSvth0Zu7w
提取码:u93j
我比较习惯把默认的那个index.jsp页面加上一个jsp:forward,做一个跳转,这样的话访问这个页面他就会自动给你跳转到这个请求路径
然后我再创建一个controller接收这个请求并跳转到login.jsp登陆页面
package com.sixmai.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
@RequestMapping("login")
public class LoginController {
@RequestMapping("toLogin")
public String toLogin() {
return "login.jsp";
}
}
所以在WEB-INF下创建一个jsp文件夹,并且创建一个login.jsp页面放在jsp文件夹里,页面代码如下(这是以前项目里的一个登陆页面,我直接copy过来了,你们也可以直接copy过去)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
登录系统
<%-- --%>
然后还有就是静态资源文件,在webapp下创建一个resources文件夹,把静态资源放进去
静态资源在这里 链接:https://pan.baidu.com/s/1vgPqhm-QpGVBfdubxlsZgw
提取码:w1ej
然后咱们再启动项目看看,点击绿色箭头启动,发现他自动跳到了登陆页面并且页面样式都正常,那就可以下一步了~
然后掏出我的神器,mybatis自动生成器(这个软件也是java写的,可以自动生成实体类以及mapper文件和mapping映射文件)
有需要的人可以点击下载
使用教程 点击查看教程
生成后的项目结构如下
生成的文件在这里:
链接:https://pan.baidu.com/s/1KI9x3GVgoyLg2JD7yCDXeA
提取码:vtrz
然后在service里写接口
上代码
package com.sixmai.service;
import java.util.Map;
public interface LoginService {
//loginname是登陆名称
//password是密码
Map login(String loginname, String password);
}
在impl中添加实现类(怕大家不懂UserExample如何使用,所以我按照正常的操作手动在mapper里写了一个login的登陆方法,详细的可以点开mapper文件和mapping文件查看)
package com.sixmai.service.impl;
import com.sixmai.domain.User;
import com.sixmai.mapper.UserMapper;
import com.sixmai.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class LoginServiceImpl implements LoginService {
@Autowired
private UserMapper userMapper;
@Override
public Map login(String loginname, String password) {
HashMap mm = new HashMap<>();
/* UserExample userExample = new UserExample();
userExample.createCriteria().andLoginnameEqualTo(loginname);*/
List users = userMapper.login(loginname);//根据用户名在数据库查找对应的用户
String msg = "";
if ((users.size() == 0)) {//如果size=0就是没找到这个用户
mm.put("status", "401");
mm.put(msg, "用户不存在!");
}
if ((users.size() > 1)) {//如果size>1就是这数据有问题了,不应该存在两个一样的用户名
mm.put("status", "401");
mm.put(msg, "error!");
}
User user = users.get(0);//取集合里第一个
if (!password.equals(user.getPassword())) {
mm.put("status", "401");
mm.put(msg, "密码错误!");
} else {
mm.put("status", "200");
mm.put(msg, "登陆成功!");
}
return mm;//把map集合里的状态码和信息提示返回给controller
}
}
到这里,基本的JDBC操作已经大功告成了
接下来在controller里做操作~
package com.sixmai.controller;
import com.sixmai.domain.User;
import com.sixmai.service.LoginService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
@Controller
@RequestMapping("login")
public class LoginController {
@Autowired
private LoginService loginService;
@RequestMapping("toLogin")
public String toLogin() {
return "login.jsp";
}
@RequestMapping("login")
public String login(User user, Model model) {
String loginname = user.getLoginname();
String password = user.getPassword();
Map map = loginService.login(loginname, password);
if (map.get("status").equals("200")) {
return "system/index.jsp";
} else {
model.addAttribute("error", map.get("msg"));
return "login.jsp";
}
}
}
通过上面的代码可以看到,当返回的集合里状态码(status)为200的时候就是成功了,跳转到system下的index.jsp页面,那么就在
WEB-INF下的jsp文件夹下创建一个system文件夹,在system文件夹里添加一个index.jsp页面,如果跳转到了index.jsp页面那么就登陆成功啦~
<%--
Created by IntelliJ IDEA.
User: XF
Date: 2018/10/25
Time: 16:29
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
MaNongXF
Hello,SSM!!!!
然后改看看成果了,启动项目输入账号密码(我默认的都是admin,验证码只是个装饰,点击验证码会自动赋值)
登陆成功~
项目源码在此,需要的可以自行下载~
链接:https://pan.baidu.com/s/14LCUP42XT45QmazZam-baA
提取码:w3v7
、