使用idea构建一个简单的SpringMVC+MySql项目

目录

一、创建项目

二、创建配置文件

1、创建配置文件 

2、创建项目文件

三、配置idea的Project Structure

1.第一步: 配置Project

2.第二步:配置Modules 

3.第三步:配置 Facets 

4.第四步: 配置 Artifacts,

四、配置文件

1、web.xml 配置

2、applicationContext.xml配置

3、context-dispatcher.xml配置

4、然后是 context.xml

5、Java类,jsp、js

6、数据库 

五、配置Tomcat

六、启动服务,验证


一、创建项目

在创建项目时要注意,在idea中一个Project对应 eclipse中一个工作区间 working space,而Module  才是一个工程,不然新建Project又要重新切换部署了,所以这里我们新建 Module

在eclipse中我们都是创建一个Dynamic Web Project,对应在idea中创建一个 Java EE Web Application

使用idea构建一个简单的SpringMVC+MySql项目_第1张图片

注意不要勾选下图中 Spring MVC 选项,此选项是使用Maven部署了。

使用idea构建一个简单的SpringMVC+MySql项目_第2张图片

创建成功后目录:

使用idea构建一个简单的SpringMVC+MySql项目_第3张图片

二、创建配置文件

1、创建配置文件 :

      在WEB-INF目录下面新建 lib目录,将Jar复制过来。这里使用的Spring4.0,还有其他一些 http ,fastjson,commons, apach的一些jar; 在src目录下创建applicationContext.xml,context-dispatcher.xml,

2、创建项目文件:

    创建java package,com.spm.action,com.spm.domain, com.spm.service, com.spm.util,分别创建Java后台 UserController, User,  UserService ,util等java类,最后创建一些前端页面文件index.jsp, login.jsp, main.jsp, main/login.js, main/main.js, 还有jquery包,放在main/目录下。(META-INF不需要创建,一会配置的时候会自动生成)项目整体结构如下图:

使用idea构建一个简单的SpringMVC+MySql项目_第4张图片

 

三、配置idea的Project Structure

          配置Project Structure,这个是idea的配置,在这里指定编译jdk、引入要依赖的Jar,Tomcat 等。Module位置相当于eclipse中编译后 .class文件位置。

选中项目点击右上角 Project Structure 按钮:如图

使用idea构建一个简单的SpringMVC+MySql项目_第5张图片

1.第一步: 配置Project

配置此工作空间(idea的Project ,spm项目相当于一个Module)的编译环境,选择jdk1.8

使用idea构建一个简单的SpringMVC+MySql项目_第6张图片

2.第二步:配置Modules 

在Modules中有三个选卡Sources、Paths、Dependencies。Sources不需要修改。先配置Paths,Paths中设置的是module编译后文件路径,最好放在当前项目目录下,如下图。

使用idea构建一个简单的SpringMVC+MySql项目_第7张图片  

然后配置Dependencies,Dependencies里面你会发现 是依赖jar目录,首先jdk已经有了 ,不需要你配置,点击左下角的+,依次添加JARs or directiors (添加 lib里面的jar ),Library (Tomcat)。如下图:

使用idea构建一个简单的SpringMVC+MySql项目_第8张图片

3.第三步:配置 Facets 

这一步是配置生成 META-INF/context.xml ,在context.xml中配置数据库连接 Source, 如下图:

使用idea构建一个简单的SpringMVC+MySql项目_第9张图片

4、第四步: 配置 Artifacts,

这一步主要是设置 Output directory:如下图:

使用idea构建一个简单的SpringMVC+MySql项目_第10张图片

最后点击OK保存即可。如果 Artifacts不存在可以点击 + ,根据Module 去生成,这里可以新增Web Application: Exploded, 会生成一个spm_war_exploded文件夹相当于项目编译后的文件夹(war包在tomcat webapps中被解压后的项目文件) ,也可以新增Web Application:Archive ,这是生成war包。

使用idea构建一个简单的SpringMVC+MySql项目_第11张图片

四、配置文件

1、web.xml 配置

    主要是一些常规配置如下:



    spm
    
        index.jsp
    

    
        org.springframework.web.context.ContextLoaderListener
    
    
        contextConfigLocation
        
            classpath:applicationContext.xml
        
    
    
        encodingFilter
        org.springframework.web.filter.CharacterEncodingFilter
        
            encoding
            UTF-8
        
    
    
        encodingFilter
        /*
    

    
        spring
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:context-dispatcher.xml
        
        1
    

    
        spring
        /
    
    
        default
        *.css
    
    
        default
        *.html
    
    
        default
        *.js
    
    
        default
        *.png
    
    
        default
        *.gif
    
    
        default
        *.map
    
    
        default
        *.eot
    
    
        default
        *.svg
    
    
        default
        *.ttf
    
    
        default
        *.woff
    
    
        default
        *.woff2
    
    
    
        default
        *.jpg
    
    
        default
        *.zip
    

    
    
        1440
    

2、applicationContext.xml配置

   applicationContext.xml配置包括spring的约束,java包的扫描,数据库jndi的配置,如下:



    
    
    
    

    
    
    
    
        
    
    
    
    
    
        
    

    
        
        
        
    

3、context-dispatcher.xml配置



    
    
        
    
    
    
    
    
        
            
                
                    
                        application/json;charset=UTF-8
                    
                
            
        
    

    
        
        
        
    

4、然后是 context.xml

     这里context.xml配置是配置数据库的地址、账号、密码等。如果项目在tomcat中运行 也可以直接在Tomcat的 ..conf/context.xml中配置 一个Resource ,这里我们已经在Facets里面添加了,这里就在项目中配置即可。注意 里面name 要和 applicationContext.xml 中 中的jndi名字一致。

使用idea构建一个简单的SpringMVC+MySql项目_第12张图片

5、Java类,jsp、js

UserController.java

package com.spm.action;

import com.spm.domain.BaseResp;
import com.spm.domain.User;
import com.spm.service.UserService;
import com.spm.util.Utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

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

@Controller
@RequestMapping("/user")
public class UserController {
    @Autowired
    UserService userService;

    @Autowired(required = true)
    private HttpServletRequest request;

    @RequestMapping("/login")
    @ResponseBody
    public BaseResp login(String userId, String pwd, @ModelAttribute("clientIpAddress") String clientIpAddress)
    {
        try {
            System.out.println("userId : "+userId +"pwd : " + pwd);
            // 校验用户名,密码,检验码,设置最后登陆时间和IP地址
            HttpSession session = request.getSession();
            User user = this.userService.checkLogin(userId, pwd);
            System.out.println(user);
            if (Utils.isBlank(user)) {
                // 记录日志
                return BaseResp.getFailInstance("Account or Password error, please check your account.");
            }
            // 获取岗位等其他信息
            session.setAttribute("user", user);
//            session.setAttribute("emp", emp);
//            session.setAttribute("orgName", orgName);
//            session.setAttribute("rndNum", userId + sDate);
            session.setAttribute("clientIpAddress", clientIpAddress);
            // 记录日志

            return BaseResp.getSuccessInstance(user);
        } catch (Exception e) {
            e.printStackTrace();
            return BaseResp.getFailInstance();
        }

    }
}

BaseResp.java

package com.spm.domain;

public class BaseResp {

    public final static Integer HTTP_OK = 200;
    public final static String MESSAGE_OK = "SUCCESS";

    public final static Integer HTTP_ERROR_500 = 500;
    public final static String MESSAGE_ERROR = "The system error, please wait.";

    public final static Integer HTTP_ERROR_501 = 501;

    private Integer retCode;
    private String message;
    private Object data;

    public BaseResp() { }

    public BaseResp(int retCode, String message, Object data) {
        this.retCode = retCode;
        this.message = message;
        this.data = data;
    }

    public static BaseResp getSuccessInstance() {
        return new BaseResp(HTTP_OK, MESSAGE_OK, null);
    }

    public static BaseResp getSuccessInstance(Object data) {
        return new BaseResp(HTTP_OK, MESSAGE_OK, data);
    }

    // 系统异常
    public static BaseResp getFailInstance() {
        return new BaseResp(HTTP_ERROR_500, MESSAGE_ERROR, null);
    }

    //  业务异常
    public static BaseResp getFailInstance(String errorMsg) {
        return new BaseResp(HTTP_ERROR_501, errorMsg, null);
    }

    public Integer getRetCode() {
        return retCode;
    }

    public void setRetCode(Integer retCode) {
        this.retCode = retCode;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public Object getData() {
        return data;
    }

    public void setData(Object data) {
        this.data = data;
    }
}

User.java 

package com.spm.domain;

public class User {


        private String userId;
        private String password;
        private String status;

        public String getUserId() {
        return userId;
    }

        public void setUserId(String userId) {
        this.userId = userId;
    }

        public String getPassword() {
        return password;
    }

        public void setPassword(String password) {
        this.password = password;
    }

        public String getStatus() {
        return status;
    }

        public void setStatus(String status) {
        this.status = status;
    }

    @Override
    public String toString() {
        return "User{" +
                "userId='" + userId + '\'' +
                ", password='" + password + '\'' +
                ", status='" + status + '\'' +
                '}';
    }
}

UserService.java 

package com.spm.service;

import com.spm.domain.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.EmptyResultDataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import javax.sql.DataSource;

@Service
public class UserService {

    @Autowired
    private JdbcTemplate jdbcTemplate;

    @Autowired
    private void setDataSource(DataSource dataSource) {
        this.jdbcTemplate = new JdbcTemplate(dataSource);
    }

    public User checkLogin(String userId, String pwd) {
        try {
            String sql = "select * from T_USER where  userId=? and password=?";
            System.out.println("sql="+sql);
            final Object[] params = new Object[]{userId, pwd};
            return this.jdbcTemplate.queryForObject(sql, params, new BeanPropertyRowMapper(User.class));
        } catch (EmptyResultDataAccessException e) {
            return null;
        }
    }
}

 

index.jsp 

<%@ page language="java" contentType="text/html; charset=GB18030"
         pageEncoding="GB18030"%>



    
    Insert title here


<%
    response.setStatus(HttpServletResponse.SC_MOVED_PERMANENTLY);
    response.setHeader("Location",request.getContextPath()+"/login.jsp");
%>

login.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>



    


spm console


main.jsp 

<%@ page contentType="text/html;charset=UTF-8" language="java" import="java.util.*,com.spm.domain.*"%>



    


login.js

function submitForm(){
    var username = $("#username").val();
    var pwd = $("#password").val();
    if(!username || username=="" || !pwd || ""==pwd){
        swal("", "用户名/密码不能为空!", "error");
        return;
    }
    var newEmpData ={
        userId: username,
        pwd: pwd
    };
    $.ajax({
        type : "POST",
        url : "user/login.json",
        data : newEmpData,
        success : function(data) {
            var ret = data;
            if(data.retCode&&data.retCode ==200 ){
                window.location.href = 'main.jsp';
            }else{
                alert(data.message);
            }
        },
        error : function() {
            alert("服务器异常,请稍后再试!");
        }
    })

}

6、数据库 

创建myfb数据库,创建了 t_user表

CREATE TABLE `t_user` (
  `userId` varchar(50) NOT NULL,
  `userName` varchar(255) DEFAULT NULL,
  `password` varchar(255) DEFAULT NULL,
  `lastLoginIp` varchar(255) DEFAULT NULL,
  `lastLoginTime` timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `status` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`userId`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

五、配置Tomcat

使用idea构建一个简单的SpringMVC+MySql项目_第13张图片

使用idea构建一个简单的SpringMVC+MySql项目_第14张图片

使用idea构建一个简单的SpringMVC+MySql项目_第15张图片

使用idea构建一个简单的SpringMVC+MySql项目_第16张图片

六、启动服务,验证

最后:启动tomcat在浏览器输入 :http://localhost:8080/spm/

使用idea构建一个简单的SpringMVC+MySql项目_第17张图片

点击登陆,后调用 login接口:查询数据库,日志如下图

使用idea构建一个简单的SpringMVC+MySql项目_第18张图片

然后返回查询结果,成功后跳转到main.jsp 页面。 

使用idea构建一个简单的SpringMVC+MySql项目_第19张图片

也可以通过postman验证接口:

使用idea构建一个简单的SpringMVC+MySql项目_第20张图片

你可能感兴趣的:(架构,SpringMVC实例,idea构建SpringMVC)