OCEJWCD问题

时间:2018-06-03 15:12:56

标签: jsp security servlets web-deployment

我正在为OCEJWCD做准备,并且有一些问题,Whizlabs和Enthuware的答案与我在运行代码并测试它时发现的内容不匹配。非常感谢您对解决这些问题的帮助。

问题1: 当在相同的URL模式上使用时,servlet安全性实现的权限

这是关于使用所有三种实现在同一URL模式上定义安全性约束的情况

  1. web.xml中的security-constraint元素
  2. ServletRegistration.Dynamic接口的setServletSecurity方法
  3. servlet中的@Servletsecurity注释
  4. 模拟考试中的答案表明权限的顺序(当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

0 个答案:

没有答案