IDEA和eclipse之类的IDE确实很不一样,所以应该要区别对待,如果私自添加classes和lib极有可能发生意外,比如我的报错如下:
Error:Internal error: (java.io.FileNotFoundException) E:\IntellJAVA\ONE\TEST\out\artifacts\TEST_war_exploded\WEB-INF\lib\mysql-connector-java-5.1.45-bin.jar (拒绝访问。)
Information:Internal caches are corrupted or have outdated format, forcing project rebuild: java.io.FileNotFoundException: E:\IntellJAVA\ONE\TEST\out\artifacts\TEST_war_exploded\WEB-INF\lib\mysql-connector-java-5.1.45-bin.jar (拒绝访问。)
java.io.FileNotFoundException: E:\IntellJAVA\ONE\TEST\out\artifacts\TEST_war_exploded\WEB-INF\lib\mysql-connector-java-5.1.45-bin.jar (拒绝访问。)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(FileOutputStream.java:270)
at java.io.FileOutputStream.(FileOutputStream.java:213)
at java.io.FileOutputStream.(FileOutputStream.java:162)
at com.intellij.openapi.util.io.FileUtil.openOutputStream(FileUtil.java:531)
at com.intellij.openapi.util.io.FileUtil.performCopy(FileUtil.java:491)
at 。。。。。。。。。。。。。。。。。。。。
所以应该冷静的分析原因然后找出解决方法,首先还原事故现场,依次排查经过。
版本:IDEA商业版 2017.3.4
MySQL-JDBC:mysql-connector-java-5.1.45-bin.jar
前提:已创建好Javaweb项目,且没有任何改动,如图示:(还没有配置好tomcat)
到了这里,大多数博客都说需要添加和设置classes或者lib目录之类的,然后巴拉巴拉
然而并没有什么用,因为IDEA本身并不需要再去配置那两货。
增加一些文件如图示:
此时配置好tomcat,点击运行,发现多了一个out文件夹,发现IDEA已经帮我们解决了classes文件夹,接下来再看lib文件夹
添加tomcat依赖包和mysql-connector-java-5.1.45-bin.jar,并且加入Artifacts中(这个后面会说)
再次运行,观察out文件夹的变化,哈哈发现多了一个lib文件夹,里面躺着的正是我们刚刚添加的mysql-connector-java-5.1.45-bin.jar和tomcat依赖包
如果一头雾水,可能需要了解javaweb各个目录,可以参考以下博客
Intellij从无到有创建项目:梳理web项目各目录及配置作用
如果你对Artifacts不太了解,可以参考以下博客
IDEA artifacts 详细部署
已打包至CSDN下载中心,顺便赚点积分:
http://download.csdn.net/download/mikeoperfect/10251201
/*
Navicat MySQL Data Transfer
Source Server : aa
Source Server Version : 50720
Source Host : localhost:3306
Source Database : user
Target Server Type : MYSQL
Target Server Version : 50720
File Encoding : 65001
Date: 2018-02-13 13:06:12
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for hh
-- ----------------------------
DROP TABLE IF EXISTS `hh`;
CREATE TABLE `hh` (
`username` varchar(20) DEFAULT NULL,
`password` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=gbk;
-- ----------------------------
-- Records of hh
-- ----------------------------
INSERT INTO `hh` VALUES ('aa', '111');
package com;
import java.sql.*;
public class DBBean
{
//数据库用户名
String userName="root";
//数据库密码
String userPassword="123";
//数据库的URL,包括连接数据库所使用的编码格式
String url="jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=gb2312&useSSL=false";
//定义一个连接对象
Connection dbcon;
//错误信息串
Statement stmt;
ResultSet rs;
/**
*@初始化操作,包括给变量赋初值和连接数据库
*/
public DBBean()
{
//初始化参数值
stmt = null;
rs = null;
//连接数据库
try
{
//声明所用的类包
Class.forName("org.gjt.mm.mysql.Driver");
//获得数据库的连接对象
dbcon= DriverManager.getConnection(url,userName,userPassword);
System.out.print("df");
}
catch(SQLException ex)
{
//打印出异常信息
System.out.println(ex.toString());
}
catch(ClassNotFoundException ex)
{
//打印出异常信息
System.out.println(ex.toString());
}
}
/**
*@对数据库执行sql执行语句,主要是插入和更新操作,返回一个布尔值变量
*/
public boolean exeSql(String strSql)
{
try
{
stmt=dbcon.createStatement();
stmt.executeUpdate(strSql);
return true;
}
catch(Exception ex)
{
//打印出异常信息
System.out.println(ex.toString());
return false;
}
}
/**
*@对数据库执行sql查询语句,返回一个ResultSet类型的对象
*/
public ResultSet exeSqlQuery(String strSql)
{
try
{
stmt=dbcon.createStatement();
rs =stmt.executeQuery(strSql);
}
catch(Exception ex)
{
//打印出异常信息
System.out.println(ex.toString());
rs = null;
}
return rs;
}
public static void main(String []args){
new DBBean();
}
}
<%@ page import="java.sql.*" language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>登录界面title>
head>
<body>
<center>
<h1 style="color:red">登录h1>
<form id="indexform" name="indexForm" action="logincheck.jsp" method="post">
<table border="0">
<tr>
<td>账号:td>
<td><input type="text" name="username">td>
tr>
<tr>
<td>密码:td>
<td><input type="password" name="password">
td>
tr>
table>
<br>
<input type="submit" value="登录" style="color:#BC8F8F">
form>
<form action="zhuce.jsp">
<input type="submit" value="注册" style="color:#BC8F8F">
form>
center>
body>
html>
<%@ page import="java.sql.*" language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<jsp:useBean id="sd" class="com.DBBean" scope="application" />
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title heretitle>
head>
<body>
<%
request.setCharacterEncoding("UTF-8");
String username=(String)request.getParameter("username");
String password=(String)request.getParameter("password");//取出login.jsp的值
//下面是数据库操作
String sql="select * from hh where username="+"'"+username+"'";//定义一个查询语句
ResultSet rs=sd.exeSqlQuery(sql);//运行上面的语句
if(rs.next())
{
if(password.equals(rs.getString("password"))){
response.sendRedirect("loginsuccess.jsp");
}
else{
out.print("");
response.setHeader("refresh", "0;url=login.jsp");
}
}
else
{
out.print("");
response.setHeader("refresh", "0;url=login.jsp");
}
%>
body>
html>
<%@ page import="java.sql.*" language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title heretitle>
head>
<body>
<h1>登陆成功h1>
body>
html>
头大,对于新鲜事物来说最忌讳的就是不知所以也不知所以然,关键还是资料太过于冗杂,尽管有资料存在某个角落,但是如何在最短的时间获取到最有效最有用的那一份,确实是一个难题。这次梳理了IDEA中javaweb中各种目录及其用法也算是有所收获了。