Giúp về gọi thi hành file Class trong trang JSP

phuongnm

Online Support
Staff member
Chào các bạn.
Mình đang viết 1 trang JSP về Quản Lý Điểm Sinh Viên.
Mình đã tạo một File .java với nội dung là chuyển toàn bộ điểm tổng kết thành (điểm chữ, Điểm 4, Tích Lũy) khi mình chạy trong file Java thì nó chuyển điểm OK rồi. Nhưng mình không biết làm cách nào để khi mình nhập một điểm mới từ trang NhapDiem.jsp thì nó tự động tính toán để chuyển điểm vừa nhập đó lun rồi Add vào CSDL.
Nói nôm na là mình muốn gọi hàm update() trong file .class do java tạo ngay trên trang jsp thì phải làm sao.
Mong các bạn giúp đỡ.
mình cám ơn.:yes:
 

tranhuyvc

Administrator
Staff member
21/1/10
6,248
230
63
Ðề: Giúp về gọi thi hành file Class trong trang JSP

Để thôi mà, trong JSp bạn sử dụng kí hiệu
<% viet code trong day %>
và chèn code Java vô thôi, chưa hiểu ý lắm bạn nói rõ lại xem
 

phuongnm

Online Support
Staff member
Ðề: Giúp về gọi thi hành file Class trong trang JSP

ý mình là vầy nè:
mình có một class java có code xử lý điểm là :
chuyển Diemtk---->DiemChu.
rồi chuyển Dchu---> Dbon.
Tính TichLuy dựa vào Dbon trên.
mình đưa tụi nó vào 1 hàm update() và cho 1 vòng lặp để chuyển tất cả Diemtk trong csdl thành DiemChu -- Dbon -- TichLuy rồi Add lun vào CSDL.
cái trên thì mình làm ok rồi. chỉ cần chạy hàm update() là nó tự động cập nhập điểm.
Mình mắc mớ là bên JSP mình không gọi được cái hàm update() đó mặc dù mình đã import cái Foder pạkage chứa cái Class trên.
mình viết Code như sau nhưng nó chỉ update Diemtk mình nhập vào còn nó không chuyển điểm được.
PHP:
<%@ page import="java.sql.*,java.util.*,pack.*;" errorPage = "info.jsp"%>

<%@ include file= "top.htm" %>
	<%
		String Masv = request.getParameter("masv");
		String Tenlhp = request.getParameter("tenlhp");
		String Diem = request.getParameter("diem");
	
	try{
			
		String msv = session.getValue("MASV").toString();
		Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
		Connection con = DriverManager.getConnection("jdbc:odbc:CD");
		Statement st = con.createStatement();
			
				st.executeUpdate("update LophpSV set Diemtk = '"+Diem+"' where Masv ='"+Masv+"' And Tenlhp='"+Tenlhp+"'");
				
		con.close();	
		}
		catch(Exception e)
		{
			System.out.println("Error :"+e);
		}
		
	SinhVien sv = new SinhVien(); // khai báo vậy đúng không?
        sv.update(); //hàm update ở trong SinhVien.java / không biết mình gọi hàm vậy có đúng không nữa. giúp mình nha.
	%>
Trong đó masv + mhk + diem là mình nhập từ trang NhapDiem.jsp
giờ mình muốn chuyển là chuyển cái điểm mới nhập vào đó bằng hàm update có sẵn trong file SinhVien.java
không biết làm sao. hic
 

JackV

Administrator
Staff member
Ðề: Giúp về gọi thi hành file Class trong trang JSP

PHP:
SinhVien sv = new SinhVien(); // khai báo vậy đúng không?
sv.update(); //hàm update ở trong SinhVien.java / không biết mình gọi hàm vậy có đúng không nữa. giúp mình nha.
vui nhở, tạo đối tượng rồi gọi phương thức của đối tượng là đúng thứ tự rồi, nhưng dữ liệu đâu ra cho nó update, trong update() viết cái gì có ai biết giơ chân lên với :))
 

phuongnm

Online Support
Staff member
Ðề: Giúp về gọi thi hành file Class trong trang JSP

Hì! vậy để mình giơ chân lên hén!
Dữ liệu mình đã nhập thành công vào CSDL đó là Điểmtk
hàm update của mình nè mong các bạn giúp đỡ :D
PHP:
	public void update(){
		SinhVien sv = new SinhVien();
			
		Vector score = new Vector(10,10);
		Double[] listScore = new Double[0];
	try{
			
			Connection con=DriverManager.getConnection(url);
			Statement stmt,stmt1;
			stmt = con.createStatement();
			ResultSet rs;
			rs=stmt.executeQuery("select * from LophpSV"); 
			
		while(rs.next()){
				
				String msv = rs.getString("Masv");
				double diem = rs.getDouble("Diemtk");
				score.add(diem);
		}

				con.close();
				
				Object[] obj = score.toArray();
					listScore = new Double[obj.length];
						for (int i=0;i<score.size();i++){
						
							listScore[i] = (Double) obj[i];
						}
				}
		catch(Exception e){
			System.out.println("Error: "+e);
	
		}
		

//--------------------------End----------------------------------------
	
		Integer n = listScore.length;
		char[] listDchu = toChu(listScore,n);
		double[] listDbon = todbon(listDchu,n);
		String[] tichluy = isTichLuy(listDchu,n); 

//====================== update Diemchu[] , DiemBon[] , TichLuy[] vao Database=================== 
	try{
			Connection con=DriverManager.getConnection(url);
			Statement stmt,stmt1;
			stmt = con.createStatement();
			
			for (int i=0;i<n;i++)
			{	stmt.executeUpdate("update LophpSV set Dchu = '"+listDchu[i]+"' where Diemtk is not null And ID="+(i+1));
				stmt.executeUpdate("update LophpSV set Dbon = '"+listDbon[i]+"' where Diemtk is not null And ID="+(i+1));
				stmt.executeUpdate("update LophpSV set TichLuy = '"+tichluy[i]+"' where Diemtk is not null And ID="+(i+1));
			
			}
			
			con.close();
	}
	
		catch(Exception e)
		{
			System.out.println("Error :"+e);
		}
		
	}
 

JackV

Administrator
Staff member
Ðề: Giúp về gọi thi hành file Class trong trang JSP

st.executeUpdate("update LophpSV set Diemtk = '"+Diem+"' where Masv ='"+Masv+"' And Tenlhp='"+Tenlhp+"'");
update đểm, sau đó gọi update() của SinhVien làm công tác convert, vậy là ok rồi, có gì thử println xem phương thức đó được gọi thế nào.
 

phuongnm

Online Support
Staff member
Ðề: Giúp về gọi thi hành file Class trong trang JSP

Mình vẫn chưa hiểu ý của bạn! dốt quá hic!
ý mình là mình đã update điểmtk thành công nhưng sao khi mình gọi hàm update() trong SinhVien.java thông qua trang jsp thì nó không thực hiện được! trong CSDL chỉ có mỗi Diemtk được update vào còn các cột Dchu + Dbon + TichLuy vẫn trống.
hình như mình gọi phương thức update() sai cú pháp hay sao mà nó không thực hiện vậy?
À nhân tiện đây bạn cho mình hỏi là có cách nào chuyển từ một chuỗi
vd : Nguyễn Văn A thành một dãy số cố định không?
Suy ra: mỗi sinh viên thì có một mã số cố định>
mình muốn làm việc này để tạo thành một mã số đăng ký để khi đăng ký môn học lần thứ 2 trở đi thì phải nhập dãy số này nó mới cho đăng ký.
Mong hồi âm của bạn.
Thank.
 

phuongnm

Online Support
Staff member
Ðề: Giúp về gọi thi hành file Class trong trang JSP

úi trời ơi! xin lỗi bác Jack nhiều nhiều.................
Nó chạy rồi !
không hiểu vì sao :D chắc do hồi tối mắt nhắm mắt mở ngồi làm nên bị lôic chỗ nào nó không update được.
giờ vào thử lại thì hỡi ôi ! nó chạy re re rồi.
xin lỗi các bạn trong CDJV lun nghen ! tự nhiên lập toppic ngớ ngẩn này! hic
thôi kệ! nếu có bạn nào gặp trường hợp tương tự thì có hướng giải quyết. hi hi!
còn cái chuyển chữ ---> dãy số mình vẫn nhờ bác Jack nhé .
 

JackV

Administrator
Staff member
Ðề: Giúp về gọi thi hành file Class trong trang JSP

À nhân tiện đây bạn cho mình hỏi là có cách nào chuyển từ một chuỗi
vd : Nguyễn Văn A thành một dãy số cố định không?
Suy ra: mỗi sinh viên thì có một mã số cố định>
mình muốn làm việc này để tạo thành một mã số đăng ký để khi đăng ký môn học lần thứ 2 trở đi thì phải nhập dãy số này nó mới cho đăng ký.
Vậy mã số sinh viên để làm gì?
Hay là mỗi sinh viên chỉ có 1 MSSV nhưng có thể học nhiều lớp, mỗi lớp có nhiều môn học khác nhau, mỗi lớp quản lý mã đăng ký môn học riêng hả?
 

phuongnm

Online Support
Staff member
Ðề: Giúp về gọi thi hành file Class trong trang JSP

mã số đó ở đây được tạo ra để tránh tình trạng nếu có đứa nào biết được password của mình thì chỉ cho vào xem thôi chứ không cho đăng ký bậy bạ gây mất đoàn kết !
mỗi đứa có một cái mã số như vậy để nhập vào mỗi khi đăng ký môn học !
nếu không có mã số đó thì nó không cho đăng ký !
và mỗi lầm muốn xóa môn học đã đăng ký cũng cần phải dùng đến mã số đó! nó giống như Mã số bí mật của riêng bạn vậy!
để lỡ có ra net ngồi đăng ký môn học mà quên out ra thì cũng không bị người khác phá chẳng hạn!
Mình nghĩ vậy cũng hay chứ :yes:!
 

phuongnm

Online Support
Staff member
Ðề: Giúp về gọi thi hành file Class trong trang JSP

Mà thôi! không cần phải chuyển từ tên Sinh viên qua làm gì cho phức tạp Jack nhỉ !
Tớ nghĩ mỗi sinh viên có một Mã sinh viên khác nhau mình lấy Mã sinh viên đó chuyển thì hay hơn nhỉ.
+ - * / gì đó là ra chứ gì ! quên mất cứ nghĩ phải lấy tên chuyển mà quên là có trường hợp cùng họ cùng tên thì mã số sinh ra cũng giống nhau thì sao!
Thank Jack nhiều vì đã quan tâm tới bài viết của mình! :D