1. Trang chủ
  2. » Thể loại khác

xu ly ngoai le trong struts 2

4 158 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 4
Dung lượng 319,54 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

exeption Interceptor - Xử lý ngoại lệ Trong ứng dụng web của chúng ta, tại bất cứ thời điểm nào cũng có thể xuất hiện exception.. Để giải quyết vấn đề này, Struts 2 cung cấp một kỹ thuật

Trang 1

exeption Interceptor - Xử lý ngoại lệ

Trong ứng dụng web của chúng ta, tại bất cứ thời điểm nào cũng có thể xuất hiện exception Để giải quyết vấn đề này, Struts 2 cung cấp một kỹ thuật xử lý ngoại lệ toàn cục, tại đây chúng ta có thể hiển thị một global result tới người dùng

Struts 2 tự động log các Uncaught Exception và điều hướng người dùng tới trang Error Handler

Trình làm việc nội tại của exception Interceptor

Nếu xảy ra ngoại lệ nào, nó được bao trong ExceptionHolder và được đẩy vào trong ValueStack để

mà chúng ta có thể dễ dàng truy cập đối tượng Exception từ result

Ghi chú: Mình đề nghị bạn nên tạo Interceptor này như là Interceptor đầu tiên, để mà nó có thể xử

lý tất cả exception, dù cho nó được ném bởi các Interception khác

Các tham số của exception Interceptor

Có ba tham số được định nghĩa cho exception Interceptor Tất cả tham số này là tùy ý

1 logEnabled: xác định rằng log nên được kích hoạt hay là không Bạn có thể truyền true hoặc

false

2 logLevel: xác định log level, nó có thể là trace, debug, info, warn, error, fatal Theo mặc định là

debug

3 logCategory: xác định log category, ví dụ như com.mycompany.app Mặc định là

com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor

Để xử lý ngoại lệ, bạn xác định global-result và global-exception-mappings trong struts.xml file

struts.xml

<? xml version = "1.0" encoding = "UTF-8" ?>

<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts

Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>

<package name = "aa" extends = "struts-default" >

Trang 2

<result name = "myresult" > globalresult.jsp </result>

</global-results>

<global-exception-mappings>

<exception-mapping result = "myresult" exception = "java.lang.Exception" ></exception-mapping>

</global-exception-mappings>

<action name = "login" class = "com.Login" >

<result> welcome.jsp </result>

<result name = "error" > error.jsp </result>

</action>

</package>

</struts>

Phần tử con global-results của package xác định global-result cho package này

Phần tử con result của global-result xác định result page mà sẽ được truyền tới người dùng

như là một view

Phần tử con global-exception-mappings của package xác định ánh xạ ngoại lệ cho tất cả

các action của package này

Phần tử con exception-mapping của global-exception-mappings ánh xạ result đã choc ho

kiểu ngoại lệ đã cung cấp Trong ví dụ này, chúng ta sử dụng Exception mà là cha của các lớp exception như IOException, ArithmeticException, … Nghĩa là nếu có bất cứ ngoại lệ nào xuất hiện, thì result đã cho sẽ được triệu hồi

Ghi chú: Chú ý rằng global-result phải được xác định trước global-exception-mappings như khi

chúng ta sử dụng trong ví dụ trên

Hiển thị exception trong Struts 2

Chúng ta có thể hiển thị exception trên trình duyệt bằng việc in exception hoặc exceptionStack Đối tượng exception in tên của ngoại lệ trong khi exceptionStack in chi tiết về ngoại lệ đó

Trang 3

globalresult.jsp

<p> Exception Name: <s:property value = "exception" /> </p>

<p> Exception Details: <s:property value = "exceptionStack" /></p>

Để hoàn thành ví dụ này, bạn cần các resource khác, đó là:

Tạo input page

JSP page này tạo một form bởi sử dụng struts-tags Nó nhận name và password từ người dùng

index.jsp

<%@ taglib uri = "/struts-tags" prefix = "s" %>

<s:form action = "login" >

<s:textfield name = "name" label = "Name" ></s:textfield>

<s:password name = "password" label = "Password" ></s:password>

<s:submit value = "login" ></s:submit>

</s:form>

Tạo lớp Action

Lớp action này chứa hai trường là name và password và một phương thức là execute Tại đây, chúng ta ném exception nếu như mật khẩu là không kết nối với struts Đây là ví dụ giả, nếu bạn comment ở dòng dưới đây trong phương thức execute thì exception sẽ không xảy ra

login.java

package com ;

public class Login

private String name , password ;

//phuong thuc getter va setter

public String execute (){

if ( password equals ( "struts" )){

Trang 4

return "success" ; } else

return "error" ; }

}

Tạo các thành phần view

Có ba thành phần view, đó là: globalresult.jsp hiển thị exception message, welcome.jsp hiển thị welcome message với username và error.jsp hiển thị error message

globalresult.jsp

<%@ taglib uri = "/struts-tags" prefix = "s" %>

Sorry an exception occured!

<p> Exception Name: <s:property value = "exception" /> </p>

<p> Exception Details: <s:property value = "exceptionStack" /></p>

<form>

<input type = "button" value = "back" onclick = history back () "

</form>

welcome.jsp

<%@ taglib uri = "/struts-tags" prefix = "s" %>

Welcome, <s:property value = "name" />

error.jsp

Xin loi , xay ra loi voi username hoac password ban nhap vao !!

< jsp : include page = "index.jsp" ></ jsp : include >

Ngày đăng: 02/12/2017, 21:01

TỪ KHÓA LIÊN QUAN

w