Bước 1: Mở Visual Studio C#
Bước 2: Chọn File -> New Project (Hoặc sử dụng tổ hợp phím tắt Ctr l+ N)
Bước 3: Trong hộp thoại New Project chọn Other Languages-> Visual C # và chọn Windows Forms Application
Bước 4: Nhập tên dự án ở phía dưới sau đó nhấp nốt OK sẽ hiển thị ra Form1 là Form mặc định của dự án.
1- Bấm chuột phải vào Project/ chọn Add Service Reference:
2- Màn hình chọn WebService hiển thị ra như bên dưới đây:
3-Bạn nhập url của web service vào khung nhập address và nhớ là đường dẫn có ?WSDL ở phía sau.4- Bạn đặt tên cho webservice ở Namespace. Click OK để hoàn thành.
Nếu tạo thành công thì trong Solution Explorer sẽ xuất hiện thư mục Service.references
Đầu tiên bạn vào code behind (nháy chuột phải chọn view code) để khai báo webservice. Bạn thêm code sau phía trên constructor của Form như bên dưới. Bạn thay đổi chữ WebService thành tên bạn đặt lúc nãy
WebService.ServiceSoapClient ws = new WebService.ServiceSoapClient(); public Form1() { InitializeComponent(); }
Như vậy đối tượng webservice đã được khai báo với tên là ws. Bạn sử dụng biến ws để gọi các phương thức của webservice.
Ví dụ: Webservice có phương thức giai_pt_bac_1 gồm 2 tham số và trả kết quả dạng string thì:
txtKq.Text = ws.giai_pt_bac_1(a, b);
Source code đầy đủ
private void button1_Click(object sender, EventArgs e) { if(radioPT1.Checked == false && radioPT2.Checked == false) { MessageBox.Show("Bạn cần chọn phương trình để giải"); } else if(radioPT1.Checked) { float a = float.Parse(txtA1.Text); float b = float.Parse(txtB1.Text); txtKq.Text = ws.giai_pt_bac_1(a, b); } else { float a = float.Parse(txtA2.Text); float b = float.Parse(txtB2.Text); float c = float.Parse(txtC2.Text); txtKq.Text = ws.giai_pt_bac_2(a, b, c); } } }
Chọn New > Web Site > Visual C# và chọn Empty Website, nơi lưu và OK:
Lúc này chúng ta có một site rỗng, chỉ chứa một file gọi là Web.config. Mở cửa sổ Solution Explorer ta sẽ thấy như sau:
1- Bấm chuột phải vào Project/ chọn Add => Service Reference:
2- Màn hình chọn WebService hiển thị ra như bên dưới đây:
3-Bạn nhập url của web service vào khung nhập address và nhớ là đường dẫn có ?WSDL ở phía sau.4- Bạn đặt tên cho webservice ở Namespace. Click OK để hoàn thành.
Nếu tạo thành công thì trong Solution Explorer sẽ xuất hiện thư mục App_WebReferences
Đầu tiên bạn add file webform mới bằng cách nháy chuột phải vào project => Add => Webform và đặt tên nhấn ok.
Tiếp theo vào code behind (nháy chuột phải chọn view code) để khai báo webservice. Bạn thêm code sau phía trên hàm Page_load như bên dưới. Bạn thay đổi chữ WebService thành tên bạn đặt lúc nãy
Service.ServiceSoapClient ws = new Service.ServiceSoapClient(); protected void Page_Load(object sender, EventArgs e) { }
Như vậy đối tượng webservice đã được khai báo với tên là ws. Bạn sử dụng biến ws để gọi các phương thức của webservice.
Ví dụ: Webservice có phương thức giai_pt_bac_1 gồm 2 tham số và trả kết quả dạng string thì:
txtKq.Text = ws.giai_pt_bac_1(a, b);
Source code đầy đủ
private void button1_Click(object sender, EventArgs e) { if(radioPT1.Checked) { float a = float.Parse(txtA1.Text); float b = float.Parse(txtB1.Text); txtKq.Text = ws.giai_pt_bac_1(a, b); } else { float a = float.Parse(txtA2.Text); float b = float.Parse(txtB2.Text); float c = float.Parse(txtC2.Text); txtKq.Text = ws.giai_pt_bac_2(a, b, c); } }
Bước 1: Mở Visual Studio C#
Bước 2: Chọn File -> New Project (Hoặc sử dụng tổ hợp phím tắt Ctr l+ N)
Bước 3: Trong hộp thoại New Project chọn Other Languages-> Visual C # và chọn Console Application
Bước 4: Nhập tên dự án ở phía dưới sau đó nhấp nốt OK.
Việc thêm webservice vào tương tự như trên winform.
1- Bấm chuột phải vào Project/ chọn Add Service Reference:
2- Màn hình chọn WebService hiển thị ra như bên dưới đây:
3-Bạn nhập url của web service vào khung nhập address và nhớ là đường dẫn có ?WSDL ở phía sau.4- Bạn đặt tên cho webservice ở Namespace. Click OK để hoàn thành.
Nếu tạo thành công thì trong Solution Explorer sẽ xuất hiện thư mục Service.references
Đầu tiên bạn cần để khai báo webservice ở hàm main. Bạn thay đổi chữ WebService thành tên bạn đặt lúc nãy
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { WebService.ServiceSoapClient ws = new WebService.ServiceSoapClient(); } } }
Như vậy đối tượng webservice đã được khai báo với tên là ws. Bạn sử dụng biến ws để gọi các phương thức của webservice.
Ví dụ: Webservice có phương thức giai_pt_bac_1 gồm 2 tham số và trả kết quả dạng string thì:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { WebService.ServiceSoapClient ws = new WebService.ServiceSoapClient(); Console.Write(ws.giai_pt_bac_1(a, b)); } } }
Ví dụ khác về cộng trừ nhân chia. Source code console full:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { ServiceReference1.ServiceSoapClient ws = new ServiceReference1.ServiceSoapClient(); int a, b; Console.Write("Nhap so thu nhat: "); a = Int32.Parse(Console.ReadLine()); Console.Write("Nhap so thu hai: "); b = Int32.Parse(Console.ReadLine()); Console.WriteLine("a + b = " + ws.cong(a, b)); Console.WriteLine("a - b = " + ws.tru(a, b)); Console.WriteLine("a * b = " + ws.nhan(a, b)); Console.WriteLine("a / b = " + ws.chia(a, b)); Console.ReadKey(); } } }
//Trong C# có 5 lệnh dùng để nhập xuất đó là: Console.Write(); Console.WriteLine(); Console.Read(); Console.ReadLine(); Console.ReadKey();
// In ra màn hình dòng chữ Hello Console.Write("Hello"); // In ra màn hình số 10 Console.Write(10); // In ra màn hình số 10.9 (f biểu thị cho kiểu dữ liệu float sẽ được trình bày chi tiết ở bài 5) Console.Write(10.9f); // In ra màn hình chữ true của kiểu dữ liệu bool(sẽ được trình bày chi tiết ở bài 5) Console.Write(true);
Console.WriteLine(Console.Read()); // đọc 1 ký tự từ bàn phím bằng lệnh Console.Read() sau đó in ra ký tự vừa đọc được.
Console.WriteLine(Console.ReadLine()); // đọc dữ liệu từ bàn phím cho đến khi gặp ký tự xuống dòng thì dừng. Sau đó in giá trị đã nhập ra màn hình.
Console.ReadKey(); // lệnh này dùng với mục đích dừng màn hình để xem kết quả.
Nhấn OK, ta được
Bạn viết các hàm như bình thường ở file Service.asmx nhưng phía trên tên hàm cần có [WebMethod]
[WebMethod] public double USD2VND(double usd) { return usd * USD_RATE; } [WebMethod] public double EUR2VND(double eur) { return eur * EUR_RATE; }
Nếu bạn muốn xem WSDL của service, ta nhấn link “Service Description” ta có
Ghi nhớ lại link này để còn dùng về sau : http://localhost:1291/ConvertWS.asmx?WSDL
Nhập usd có giá trị 100, nhấn Invoke, kết quả nhận được là
Như vậy là chúng ta đã tạo được 1 Web Service, bây giờ chúng ta có thể triển khai 1 ứng dụng client được rồi.
Nguồn: https://vovanhai.wordpress.com/web-services
Mình sử dụng Netbeans IDE nhé!
1. Khởi động Netbean, tạo 1 project cho ứng dụng Java: chọn menu File => New Project…
– Hộp thoại New Project xuất hiện,
– Trong hộp thoại này, mục Categories (1) chọn Java, mục Projects (2) chọn Java Application, Xong chọn nút Next để chuyển sang màn hình kế tiếp
– Trong màn hình New Java Application
+ Mục Project Name (1): đặt tên cho Project (lưu ý là không sử dụng ký tự đặc biệt)
+ Mục Project Location (2): chọn nơi lưu Project
+ Mục Create Main Class (3): bỏ chọn (không có dấu check, hình chụp trên là có dấu check)
+ Xong chọn Finish (4) để hoàn thành việc tạo ra Project cho ứng dụng Java
TẠO JFRAME FORM
Tạo Form trống, chưa có gì hết
– Trong Netbean IDE, chọn File => New File…
– Màn hình New File xuất hiện
– Trong màn hình này, mục Categories chọn Swing GUI Forms, mục File Types chọn JFrame Form, xong chọn nút Next
– Mỗi cửa sổ Swing trong Java là một class thừa kế từ lớp JFrame, trong màn New Application Sample Form
+ Mục Class Name: đặt tên cho Form
+ Mục Package: đặt tên cho package chứa Form này
+ Xong chọn nút Finish để hoàn thành việc tạo Form
– Chúng ta có thể Run Project để xem kết quả:
CÁCH KHÁC TẠO JFRAME FORM ĐƠN GIẢN HƠN
Nháy chuột phải vào project => New => JFrame Form
Tools => Plugins => Availables Plugins => tích vào SOAP Web Service => Install (nhấn next,… và chờ khởi động lại netbeans)
Ở JFrame bạn cần sử dụng webservice chọn Source
Bạn mở thư mục Web Service References => Service => ServiceSoap
Tại đây có tất cả các method mà webservice hỗ trợ
Bạn cần sử dụng hàm nào thì chỉ cần nắm method đó kéo thả vào code bên khung bên phải.
Như ví dụ là phương thức add như vậy bên code sẽ tạo cho ta một phương thức add và sử dụng như bình thường.
Ví dụ method add này nhận 2 tham số kiểu int và trả về kiểu int
int tong = add(5, 7);
Đơn giản lắm đúng không?
Bước 1: Mở Netbeans
Bước 2: Chọn File -> New Project (Hoặc sử dụng tổ hợp phím tắt Ctr l+ N). Chọn Java => Java Application => Next
Bước 3: Đặt tên project và chọn nơi lưu.
Bước 4: Nhấn Finish
Việc thêm webservice vào tương tự như trên Java App Form.
Tools => Plugins => Availables Plugins => tích vào SOAP Web Service => Install (nhấn next,… và chờ khởi động lại netbeans)
Bạn mở file cùng tên với project của bạn.
Bạn mở thư mục Web Service References => Service => ServiceSoap
Tại đây có tất cả các method mà webservice hỗ trợ
Bạn cần sử dụng hàm nào thì chỉ cần nắm method đó kéo thả vào code bên khung bên phải.
Như ví dụ là phương thức add như vậy bên code sẽ tạo cho ta một phương thức add và sử dụng như bình thường.
Ví dụ method add này nhận 2 tham số kiểu int và trả về kiểu int
package consolejava; import java.util.Scanner; public class ConsoleJava { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int so1 = 0, so2 = 0; // Nhập vào hai số System.out.print("Nhập số thứ nhất: "); so1 = Integer.parseInt( scanner.nextLine() ); System.out.print("Nhập số thứ hai: "); so2 = Integer.parseInt( scanner.nextLine() ); //hiển thị kết quả System.out.print("Tổng: " + add(so1, so2)); } private static int add(int a, int b) { org.tempuri.Service service = new org.tempuri.Service(); org.tempuri.ServiceSoap port = service.getServiceSoap(); return port.cong(a, b); } }
System.out.print(); System.out.println();
Trước tiên cần tạo đối tượng Scanner trong hàm main và import thư viện Scanner
package consolejava; import java.util.Scanner; public class ConsoleJava { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); } }
Sau đó từ đối tượng Scanner bạn tiến hành chấm đến phương thức cần sử dụng
scanner.nextLine() scanner.nextInt() scanner.nextFloat() ...
Những thứ bạn cần cài:
Tools => Plugins => Availables Plugins => tích vào SOAP Web Service => Install (nhấn next,… và chờ khởi động lại netbeans)
Download GlassFish: https://download.oracle.com/glassfish/5.0/release/index.html và chọn glassfish-5.0.zip để download. Sau đó giải nén thư mục tải về.
Thêm Server GlassFish:
Bạn vào Windows => Service
Tại Tab Servies => Chuột phải lên Servers chọn Add Server
Sau đó chọn “GlassFish Server” => Next.
Chọn đường dẫn thư mục giải nén của GlassFish tải lúc nãy (nhớ là đi vào thêm một cấp thư mục nữa). Nhấn Next
Trường hợp bạn bị lỗi “Not a valid GlassFish Server installation.” thì:
Nếu không lỗi thì tiếp tục nhé!
Để cấu hình mặc định => Finish
Bật Server lên:
Tại Tab Servies => Chuột phải lên Servers GlassFish chọn Start
Nếu cài được GlassFish phía trên thì khỏi cần phải cài thêm TomCat nhé. Trường hợp cài lỗi thì mình sử dụng TomCat.
Bạn download source TomCat về máy tại đường dẫn: https://tomcat.apache.org/download-80.cgi (chọn phiên bản phù hợp 32bit, 64bit tùy máy bạn nhé). Sau đó giải nén.
Thêm Server Tomcat:
Bạn vào Windows => Service
Tại Tab Servies => Chuột phải lên Servers chọn Add Server
Sau đó chọn “Apache Tomcat” hoặc “Apache Tomcat or TomEE” tùy phiên bản netbeans bạn cài => Next.
Chọn đường dẫn thư mục lúc nãy bạn giải nén tại và nhớ vào thêm một cấp thư mục nữa. Đặt usename, password. Nhấn Finish
Bật Server lên:
Tại Tab Servies => Chuột phải lên Servers TomCat chọn Start
Nếu gặp lỗi “‘127.0.0.1*’ is not recognized as an internal or external command, operable program or batch file.” Bạn khắc phục như sau:
– B1: Mở Netbeans, vào Tool, chọn Option, click “no proxy“
– B2: Vào Services > Servers > Chuột phải Apache Tomcat > chọn Start
Chọn File -> New Project từ menu -> chọn Java Web -> chọn Web Application -> chọn Next.
Tại Nhập tên project tại Project Name, nhập JavaWebApplication. Chọn nơi lưu trữ project tại Project Location -> chọn Next.
Lựa chọn Server: (Lúc nãy bạn cài GlassFish thì chọn GlassFish, Tomcat chọn Tomcat nhé) và Java EE Version: Java EE 7 Web -> chọn Next
Tại màn hình kế tiếp chọn Finish
Chuột phải tại tên project -> chọn New -> chọn Web Service…
Đặt tên webservice tại Web Service Name và đặt tên package tại Package và nhấn Finish.
Bên project bạn sẽ thấy xuất hiện thư mục Web Service và bên trong là tên webservice bạn đặt tên lúc nãy.
Đến đây bạn cần build project trước khi viết webservice. Chọn nút Run trên thanh công cụ của netbeans.
Build xong chương trình sẽ mở một web trong trình duyệt, bạn cứ tắt trình duyệt và tiếp tục nhé.
Thêm Phương thức cho Webservice
Nháy chuột phải vào tên webservice => Add Operation …
Nhập tên phương thức và kiểu trả về. Nếu khác kiểu string, bạn nhấnBrowserđể chọn kiểu dữ liệu (lưu ý là chọn tên của kiểu dạng đầy đủ. Ví dụ kiểuintthì làinteger) và nhấnOK.
Đến đây bạn viết hàm như bình thường. Ví dụ như trên là hàm tổng mình truyền hai tham số và trả về tổng của chúng. Mình viết như sau:
/** * Web service operation */ @WebMethod(operationName = "tong") public Integer tong(int a, int b) { //TODO write your implementation code here: return a + b; }
Viết xong bạn build lại project
Sau đó bạn chuột phải lên webservice => Test Web Service
Với GlassFish sẽ ra giao diện như thế này:
Còn Tomcat sẽ ra như thế này
Vì vậy, bạn thấy GlassFish sẽ tiện hơn cho ta khi test đúng không nào?
Cách Sửa lỗi: Bạn vào Debug => Options and Setttings
Chọn Source Controll => None => OK
Và kết nối lại webservice thôi.
Với Java là webservice lệnh kết nối không còn là:
WebService.ServiceSoapClient ws = new WebService.ServiceSoapClient();
mà sẽ được thay thành
WebService.webserviceClient ws = new WebService.webserviceClient();
Lưu ý: WebService là tên bạn đặt lúc thêm webservice vào
Đến đây cách xài như bình thường ws chấm đến phương thức cần sử dụng là ok.
//int, float, doutble,... to string int a = 5; String b = a.toString(); //string to int Int32.Parse() //string to float float.Parse() //string to double double.Parse()
//int, float, doutble,... to String int a = 5; String b = String.valueOf(a); //String to int Integer.parseInt() //String to float Float.parseFloat() //String to double Double.parseDouble()
Sắp xếp tăng dần
Array.Sort(arr); // arr: tên mảng // ban đầu: arr => 1 4 5 -1 40 25 // sau khi sort: -1 1 4 5 25 40
Sắp xếp giảm dần
Array.Reverse(arr); // arr: tên mảng // ban đầu: arr => 1 4 5 -1 40 25 // sau khi sort: 40 25 5 4 1 -1
Sắp tăng dần
Arrays.sort(arr);
Sắp giảm dần
Bạn copy hàm này vào để sử dụng nhé!
public static void reverse(int[] input) { int last = input.length - 1; int middle = input.length / 2; for (int i = 0; i <= middle; i++) { int temp = input[i]; input[i] = input[last - i]; input[last - i] = temp; } }
foreach (int i in arr) result += " " + i; // tương tự với //for(int i =0; i<arr.Length; i++) // result += " " + arr[i];
for(int i : arr) result += " " + i;
Khi test webservice java nếu bị lỗi này thì fix như sau:
Bài viết tham khảo: https://netbeans.org/kb/docs/websvc/jax-ws.html#extschema
Cách fix:
-J-Djavax.xml.accessExternalSchema=all
<java-config> ... <jvm-options>-Djavax.xml.accessExternalSchema=all</jvm-options> </java-config>
Cách sửa lỗi:
Có thể sử dụng class kết nối csdl để sử dụng câu lệnh sql thông thường mà không cần linq. File kết nối bạn xem mục 4 của bài viết: Những điều cơ bản về Winform C#.
connect ở các hàm bên dưới là tên đối tượng của class KN_CSDL
KN_CSDL connect = new KN_CSDL();
[WebMethod] public DataSet duLieuBoDeThi() { String sql = "SELECT * FROM tbl_bo_de_thi"; DataSet dt_bo_de = new DataSet(); dt_bo_de = connect.LayBang2(sql); return dt_bo_de; }
[WebMethod] public bool taoBoDe(string tenBoDe) { String sql = "insert into tbl_bo_de_thi(ten_bo_de) values(N'" + tenBoDe + "')"; if (connect.CapnhatCSDL(sql)) { return true; } else return false; }
[WebMethod] public bool capNhatBoDe(string tenBoDe, string id) { String sql = "update tbl_bo_de_thi set ten_bo_de=N'" + tenBoDe + "' where ma_bo_de='" + id + "'"; if (connect.CapnhatCSDL(sql)) { return true; } else return false; }
[WebMethod] public bool xoaBoDe(string id) { String sql = "delete from tbl_bo_de_thi where ma_bo_de=N'" + id + "'"; if (connect.CapnhatCSDL(sql)) { return true; } else return false; }
[WebMethod] public DataSet getBoDeByID(string id) { String sql = "select * from tbl_bo_de_thi where ma_bo_de='" + id + "'"; DataSet bode_table = new DataSet(); bode_table = connect.LayBang2(sql); return bode_table; }
using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Linq; using System.Web; /// <summary> /// Summary description for KN_CSDL /// </summary> public class KN_CSDL { SqlConnection sqlketnoi; SqlCommand sqllenh; public KN_CSDL() { sqlketnoi = new SqlConnection(); //string chuoiketnoi = "Data Source =.; Initial Catalog = QLHH; Integrated Security = True"; string chuoiketnoi = @"Data Source=TRONGHAO-PC\SQLEXPRESS;Initial Catalog=QLHH;Integrated Security=True"; sqlketnoi.ConnectionString = chuoiketnoi; sqllenh = new SqlCommand(); } public bool Moketnoi() { try { sqlketnoi.Open(); return true; } catch { return false; } } public void Dongketnoi() { sqlketnoi.Close(); } public bool CapnhatCSDL(string str) { try { this.Moketnoi(); sqllenh.Connection = sqlketnoi; sqllenh.CommandText = str; sqllenh.ExecuteNonQuery(); this.Dongketnoi(); return true; } catch { return false; } } public DataTable LayBang(string str) { this.Moketnoi(); SqlDataAdapter bodocghi = new SqlDataAdapter(str, sqlketnoi); DataTable bang = new DataTable(); bodocghi.Fill(bang); this.Dongketnoi(); return bang; } public DataSet LayBang2(string str) { this.Moketnoi(); SqlDataAdapter bodocghi = new SqlDataAdapter(str, sqlketnoi); DataSet bang = new DataSet(); bodocghi.Fill(bang); this.Dongketnoi(); return bang; } public string mahoa(string pass) { return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(pass.Trim(), "SHA1"); } }
select * from NHANVIEN as nv where nv.MaNV not in ( select top 2 MaNV from NHANVIEN ) --số 2 thay thành số dòng muốn bỏ
declare @sl int select @sl = (count(*) - 1) from NHANVIEN select * from NHANVIEN as nv where nv.MaNV not in ( select top (@sl) MaNV from NHANVIEN )
DataSet dtSet = new DataSet(); dtSet = ws.duLieuBoDeThi(); DataTable nguoidung_table = new DataTable(); nguoidung_table = dtSet.Tables[0];