目录
一、创建项目
二、创建配置文件
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
注意不要勾选下图中 Spring MVC 选项,此选项是使用Maven部署了。
创建成功后目录:
在WEB-INF目录下面新建 lib目录,将Jar复制过来。这里使用的Spring4.0,还有其他一些 http ,fastjson,commons, apach的一些jar; 在src目录下创建applicationContext.xml,context-dispatcher.xml,
创建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不需要创建,一会配置的时候会自动生成)项目整体结构如下图:
配置Project Structure,这个是idea的配置,在这里指定编译jdk、引入要依赖的Jar,Tomcat 等。Module位置相当于eclipse中编译后 .class文件位置。
选中项目点击右上角 Project Structure 按钮:如图
配置此工作空间(idea的Project ,spm项目相当于一个Module)的编译环境,选择jdk1.8
在Modules中有三个选卡Sources、Paths、Dependencies。Sources不需要修改。先配置Paths,Paths中设置的是module编译后文件路径,最好放在当前项目目录下,如下图。
然后配置Dependencies,Dependencies里面你会发现 是依赖jar目录,首先jdk已经有了 ,不需要你配置,点击左下角的+,依次添加JARs or directiors (添加 lib里面的jar ),Library (Tomcat)。如下图:
这一步是配置生成 META-INF/context.xml ,在context.xml中配置数据库连接 Source, 如下图:
这一步主要是设置 Output directory:如下图:
最后点击OK保存即可。如果 Artifacts不存在可以点击 + ,根据Module 去生成,这里可以新增Web Application: Exploded, 会生成一个spm_war_exploded文件夹相当于项目编译后的文件夹(war包在tomcat webapps中被解压后的项目文件) ,也可以新增Web Application:Archive ,这是生成war包。
主要是一些常规配置如下:
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
applicationContext.xml配置包括spring的约束,java包的扫描,数据库jndi的配置,如下:
application/json;charset=UTF-8
这里context.xml配置是配置数据库的地址、账号、密码等。如果项目在tomcat中运行 也可以直接在Tomcat的 ..conf/context.xml中配置 一个Resource ,这里我们已经在Facets里面添加了,这里就在项目中配置即可。注意
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.*"%>
spm main console
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("服务器异常,请稍后再试!");
}
})
}
创建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在浏览器输入 :http://localhost:8080/spm/
点击登陆,后调用 login接口:查询数据库,日志如下图
然后返回查询结果,成功后跳转到main.jsp 页面。
也可以通过postman验证接口: