利用java做前端连接数据库_基于java的前端与数据库的交互
在之前很長一段時間都在搞前端部分,然后又大概了解了下數據庫,現在想著把二者交融在一起吧……
首先我在Eclipse中的布局是這樣的,也不知道合不合理:
用到了四個文件,分別是用于用戶輸入信息的前端界面Input.jsp,聲明各個所需信息屬性的Employ.java(話說這個可以稱之為一個javabean),用于和數據庫交互的EmployAdd.java,還有綜合處理各種信息的GetServlet.java(這個是核心),接下來就一一展示吧……
1.
Input.jsp
pageEncoding="utf-8"%>
Insert title here添加學生信息
| 姓名 | |
| 性別 | 男 女 |
| 年齡 | |
| 所在班級 | 1班 2班 3班 4班 5班 |
提交 | 重置 |
很常規的操作,將頂端的編碼都改成了utf-8,上篇也提到了,中文亂碼問題,還是統一的好……在“性別”那里犯了個低級錯誤,在servlet中獲取name=sex的值時我誤以為是文本的男女,即外面的男or女,實際上獲取的是value中的值,一開始沒有設置,結果插到數據庫中的是“on”。。還有就是action中的路徑/GetServlet,之前翻開javaweb開發時就提到了路徑問題,很大的篇幅,使用
getContextPath()可以獲取相對路徑,避免了很多麻煩,貌似有些項目和運行路徑不一致,在這里可以使用該命令獲取項目的根目錄,在本例中即/test,運行該頁面顯示的路徑為:http://localhost:8080/test/Input.jsp,大家還可以了解一下
getServletPath()、
getRequestURI()等方法,都是獲取各種路徑的。
在Tomcat中運行該jsp文件,輸入相關數據:
2.
Employ.java
package EmployAll;
public class Employ {
private String name;
private String sex;
private int age;
private String cla;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getCla() {
return cla;
}
public void setCla(String cla) {
this.cla = cla;
}
}
這個沒啥好說的,我們需要的四個屬性和對應的set/get方法……
3.
EmployAdd.java
package EmployAll;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class EmployAdd {
public boolean addEmploy(Employ employ) {
String name=employ.getName();
String sex=employ.getSex();
int age=employ.getAge();
String cla=employ.getCla();
Connection conn=null;
PreparedStatement pstat=null;
//注冊驅動
String driver = "com.mysql.cj.jdbc.Driver";
//URL指向要訪問的數據庫名mysql
String url = "jdbc:mysql://localhost:3306/mysql?useSSL=false&serverTimezone=UTC&characterEncoding=utf8";
//MySQL配置時用戶名
String user = "root";
//MySQL配置時的密碼
String password = "123456";
try {
Class.forName(driver); //加載驅動程序
conn=DriverManager.getConnection(url, user, password);//獲取數據庫鏈接
String sql="insert into student (name,age,sex,cla) values (?,?,?,?)";
pstat=conn.prepareStatement(sql); //創建prepareStatement類對象,用來執行SQL語句
pstat.setString(1, name);
pstat.setInt(2, age);
pstat.setString(3, sex);
pstat.setString(4, cla);
pstat.executeUpdate();//執行sql語句
pstat.close();
conn.close();
} catch(ClassNotFoundException e) {
System.out.println("加載驅動異常!");
e.printStackTrace();
} catch(SQLException e) {
System.out.println("獲取連接異常!");
e.printStackTrace();
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
return true;
}
}
之前有篇博客專門寫了java與數據庫連接的,只不過上次是查詢,這次是插入,內容也很常規,用到了prepareStatement對象,它是預編譯的sql語句對象,可以先用?來代替對應值,而后再用setXXX插入具體值,詳細的解釋大家可以查一下文檔~~~下面的處理異常時的確出了問題,先是找不到驅動,這個在上一篇已經說了,jar包的問題,然后獲取連接異常,結果發現values拼寫錯誤。。
4.
GetServlet.java
public class GetServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
response.setContentType("text/html");
request.setCharacterEncoding("utf-8");
String name=request.getParameter("name");
String sex=request.getParameter("sex");
String age=request.getParameter("age");
String cla=request.getParameter("class");
Employ employ=new Employ();
employ.setName(name);
employ.setSex(sex);
employ.setAge(Integer.parseInt(age));
employ.setCla(cla);
EmployAdd ema=new EmployAdd();
ema.addEmploy(employ);
}
}
創建一個servlet,默認的我就不添加了,代碼太多了,由于我們用到的是post方式,只修改它就行了。先是設置各種格式,這個也出了錯,上篇已經比較詳細地介紹了,編碼方式需要統一,這個很重要。。接下來就是通過getParameter()方法獲取對應name的值,然后創建一個Employ對象,用set()將獲取的前端用戶輸入的值收入囊中,最后創建一個EmployAdd對象調用addEmploy()方法,在這個方法一開始便是使用
Employ對象的get()方法獲取之前set的值,這樣處理數據庫連接的類便拿到了用戶輸入的值并將其放到數據庫中……
大體就是這樣,接下來增加些難度,看看會不會出現驚喜。
之前一直亂碼,直到“最終”同學出現才搞定~~~(小剛小明和小紅是在mysql中直接寫入的)
總結
以上是生活随笔為你收集整理的利用java做前端连接数据库_基于java的前端与数据库的交互的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 对于开发软件的NABCD分析
- 下一篇: mysql的join查询和多次查询比较