我正在为OCEJWCD做准备,并且有一些问题,Whizlabs和Enthuware的答案与我在运行代码并测试它时发现的内容不匹配。非常感谢您对解决这些问题的帮助。
问题1: 当在相同的URL模式上使用时,servlet安全性实现的权限
这是关于使用所有三种实现在同一URL模式上定义安全性约束的情况
模拟考试中的答案表明权限的顺序(当URL模式与所有3个模式匹配时,哪个权限超过其他权限) 是1(最强大),2然后是3
但是当我运行代码时,我看到@ServletSecurity注释比ServletRegistration.Dynamic接口的setServletSecurity方法更强大。 哪一个是正确的?
问题2: jsp:如果在没有无参数构造函数的类上使用,则会出现useBean错误
在考试中有一个常见的问题是,如果在类上使用jsp:useBean来实例化它会发生什么,但是类没有no-arg构造函数会发生什么。
我们举一个例子,我有一个班级员工
public class Employee {
private Integer employeeId;
private String name;
public Employee(Integer employeeId, String name) {
this.employeeId = employeeId;
this.name = name;
}
public Integer getEmployeeId() {
return employeeId;
}
public void setEmployeeId(Integer employeeId) {
this.employeeId = employeeId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
四个范围中的任何一个都没有对象存在,我在jsp
中有这个<jsp:useBean id="employee" class="com.kingshuk.model.Employee" />
我相信它会抛出运行时异常,因为tomcat会尝试做类似这样的事情
com.kingshuk.model.Employee employee = null;
boolean _jspx_specialmb = false;
synchronized (pageContext) {
employee= (com.kingshuk.model.Employee)pageContext.getAttribute("employee",PageContext.PAGE_SCOPE);
if ( employee == null ) {
_jspx_specialmb = true;
try {
employee = (com.kingshuk.model.Employee) java.beans.Beans.instantiate(this.getClass().getClassLoader(), "com.kingshuk.model.Employee");
} catch (Exception exc) {
throw new ServletException (" Cannot create bean of class "+"com.kingshuk.model.Employee", exc);
}
pageContext.setAttribute("employee", employee, PageContext.PAGE_SCOPE);
}
}
但是有些答案说它会抛出编译错误而不是在运行时抛出异常。 哪一个是正确的?
在7月26日的考试之前,我非常感谢能得到的任何帮助。
谢谢, Kingshuk