Servlet跳转与上下文

合集下载

struts1和strtus2的区别

struts1和strtus2的区别

struts1和strtus2的区别1、Action类Struts 1的Action类扩展一个抽象基类。

在Struts 1是一个常见的问题抽象类而不是接口编程。

Struts 2的行动可能实现一个Action接口,连同其他接口,使可选和定制的服务。

Struts 2中提供了一个基础ActionSupport类实现常用的接口。

虽然,Action接口不是必需的。

任何的POJO对象与一个执行签名可以用作Struts 2的Action对象。

2、线程模型Struts 1的动作是单身,必须是线程安全的,因为只会有一个类的一个实例来处理所有的请求,该行动。

的单身战略名额限制什么可以做Struts 1的操作和发展,需要格外小心。

Action 资源必须是线程安全的或同步的。

在Struts 2 Action对象为每一个请求实例化,因此没有线程安全问题。

(在实践中,servlet 容器会产生许多被丢弃的对象,每个请求,以及一个新的对象并没有对性能上的损失或影响垃圾收集)。

3、Servlet的依赖Struts 1的操作的servlet API的依赖,因为HttpServletRequest和HttpServletResponse被传递给execute方法的调用时采取行动。

Struts 2的动作没有连接到容器中。

最经常使用的servlet上下文被表示为简单的地图,让行动单独测试。

Struts 2的动作仍然可以访问原始的请求和响应,如果需要的话。

然而,其他建筑元素减少或消除的,需要访问HttpServetRequest直接或HttpServletResponse的。

4、可测性测试Struts 1行动的主要障碍是execute方法暴露了Servlet API。

一个第三方扩展中,Struts TestCase中,提供了一组Struts 1的模拟对象。

Struts 2的动作可以测试通过实例的操作,设置属性和调用方法。

依赖注入的支持也使测试更简单。

java web 期末试题填空简答整理

java web 期末试题填空简答整理

1 _____和_____标签用来定义表格的行和单元格。

<td> <tr>2表格的_____和_____属性用于水平和垂直合并单元格。

Colspan rowspan3表单主要由_____、_____和_____三部分构成。

表单标签表单域表单按钮4_____标签定义浏览器不支持框架时显示的内容。

<noframes>5 CSS样式由_____、_____、_____三部分组成选择符属性属性值6常用的选择符主要有三类:_____、_____、_____ HTML选择符ID选择符类选择符7在WEB页面中使用CSS的方法有三种_____、_____、_____ 内部样式表内嵌样式外部样式表8 常用的页面布局技术有______、______和______。

DIV+CSS布局框架布局表格布局9 一个标准的网页由_______、_______和_______三部分组成。

结构外观行为10 使用_____语句可以在HTML中引入d:/a.js文件<script type="text/javascript" src="d:/a.js"></script>11 在JavaScript中根据变量的作用域可以分为____和____两种全局变量局部变量12 在浏览器的DOM中,根对象是______ window13 表单对象是________对象的子对象document14 Div层的隐藏和显示主要是用到_________属性,该属性的值为_________时隐藏Div层Display none15调试Servlet时,Eclipse要进入____________视图下Debug16 Servlet中会话跟踪技术的方案有_____、______、______和隐藏表单域技术。

Cookie Session URL重写17 JSP页面中的6个基本元素包括___________、___________、___________、___________、动作标签和注释。

jsf和struts的区别

jsf和struts的区别

据说JSF的主要负责人就是 struts的主要作者,所以二者的相似点还是有很多的。

都采用taglib来处理表示层:在jsp页面中,二者都是采用一套标记库来处理页面的表示和model层的交互。

二者都采用了bean来作为和jsp页面对应的model层。

该model层保存了jsp 页面上的数据,同时可以作一些验证工作,在struts中就是FormBean,在JSF 中就是back bean。

都采用bean作为控制层,Struts中采用ActionBean来处理业务逻辑,对于简单的应用可以直接在ActionBean中编写业务逻辑代码,也可以调用另外的bean 或者EJB来处理业务逻辑;对于JSF则采用backing bean来处理业务逻辑,同样,backing bean也可以直接编写业务逻辑或者调用其他的bean来处理业务逻辑。

都采用xml配置文件来处理bean的配置,页面导航等问题,增加了系统的灵活性。

都采用资源文件来处理国际化和本地化的问题。

然而,二者的不同点也很多,下面分别说明:首先二者的侧重点不同,Struts侧重于控制层,侧重于如何分派和处理用户的请求,所以表示层的taglib功能不够强大。

而JSF则侧重于表示层,实现了大量的标准组件,允许开发人员对表示层有更多的控制权,同时JSF实现了一个开放的架构,允许开发人员创建自己的组件,或者在现有的组件上继承,开发功能更强大的组件。

本人认为这是JSF最大的一个特色。

(有点类似于vcl和.net 组件)和jsp 对应的model层,在Struts中采用FormBean来保存用户输入的数据,基本上一般字段的类型都是String。

而且可以进行简单的验证,当然如果采用动态的FormBean就不能在FormBean中进行验证了。

在Struts中,jsp和FormBean 是紧密结合在一起的,只要写一个 jsp就必须对应一个FormBean,同时jsp上的每个组件都对应FormBean中相同名字的字段。

context-param与init-param的区别与作用

context-param与init-param的区别与作用
<context-param>的作用:
web.xml的配置中<context-param>配置作用
1.启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: <listener></listener>和<context-param></context-param>
public voidcontextDestroyed(ServletContextEvent sce){
//用于在容器关闭时,操作
}
//用于在容器开启时,操作
public voidcontextInitialized(ServletContextEvent sce){
String rootpath =sce.getServletContext().getRealPath("/");
其它略之....
}
}
/*最终输出
-------------rootPath:D:\tomcat_bbs\webapps\BBSCS_8_0_3\
2009-06-09 21:51:46,526 [oer.bbscs.web.servlet.SysListener]-[INFO]
Application Run Path:D:/tomcat_bbs/webapps/BBSCS_8_0_3/
boolean burlrewrtie = false;
if (urlrewrtie != null) {
burlrewrtie = Boolean.parseBoolean(urlrewrtie);
}
E_URL_REWRITE = burlrewrtie;

java Servlet请求转发和重定向

java Servlet请求转发和重定向

•请求转发☐请求转发是指将请求再转发到另一资源(一般为JSP或Servlet)。

此过程依然在同一个请求范围内,转发后浏览器地址栏内容不变☐请求转发使用RequestDispatcher接口中的forward()方法来实现,该方法可以把请求转发到另外一个资源,并让该资源对浏览器的请求进行响应RequestDispatcher rd = request.getRequestDispatcher(path);rd.forward(request,response);或request.getRequestDispatcher(path) .forward(request,response);•重定向☐重定向是指页面重新定位到某个新地址,之前的请求失效,进入一个新的请求,且跳转后浏览器地址栏内容将变为新的指定地址☐重定向是通过HttpServletResponse对象的sendRedirect()来实现,该方法相当于浏览器重新发送一个请求response.sendRedirect(path);•请求转发和重定向区别如下:☐forward()只能将请求转发给同一个Web应用中的组件,而sendRedirect()方法不仅可以重定向到当前应用程序中的其他资源,还可以重定向到其他站点的资源。

☐sendRedirect()方法重定向的访问过程结束后,浏览器地址栏中显示的URL会发生改变,由初始的URL地址变成重定向的目标URL;而调用forward()方法的请求转发过程结束后,浏览器地址栏保持初始的URL地址不变。

☐forward()方法的调用者与被调用者之间共享相同的request对象和response对象;而sendRedirect()方法调用者和被调用者使用各自的request对象和response对象,它们属于两个独立的请求和响应过程。

•使用请求对象(request)存储数据(在servlet中存,在JSP中取)request. setAttribute(“score”,score);int score=(INTEGER)request. getAttribute(“score”);☐HttpServletRequest接口的方法:public void setAttribute(String name, Object obj)public Object getAttribute(String name)public Enumeration getAttributeNames()public void removeAttribute(String name)•使用HttpSession对象存储数据HttpSession session=request.getSession();session. setAttribute(“score”,score);int score=(Integer) session. getAttribute(“score”);☐HttpSession接口的方法public void setAttribute(String name, Object obj)public Object getAttribute(String name)public Enumeration getAttributeNames()public void removeAttribute(String name)•使用ServletContext对象存储数据ServletContext context = this.getServletContext();或ServletContext context = this.getServletConfig().getServletContext();context. setAttribute(“score”,score);int score=(Integer) application. getAttribute(“score”);ServletContext接口的方法public void setAttribute(String name, Object obj)public Object getAttribute(String name)public Enumeration getAttributeNames()public void removeAttribute(String name)简单的说,HttpServletRequest共享的对象仅在请求的生存期中可被访问,使用HttpSession共享的对象仅在会话的生存期中可被访问,使用ServletContext共享的对象在应用程序的生存期中可被访问。

Java Web开发与实践第6章01 JSP内置对象概述

Java Web开发与实践第6章01  JSP内置对象概述

out page
pageContext
javax.servlet.jsp.JspWriter javax.servlet.jsp.HttpJspPage
javax.servlet.jsp.PageContext
page page
page
request response ession
javax.servlet.http.HttpServletRequest javax.servlet.http.HttpServletResponse javax.servlet.http.HttpSession
request page session
JSP内置对象概述
内置对象名称 application config exception 所属类型 javax.servlet.ServletContext javax.servlet.ServletConfig ng.Throwable 有效范围 applicatio n page page 说 明 该对象代表应用程序上下文,它允许JSP页面 与包括在同一应用程序中的任何Web组件共享 信息 该对象允许将初始化数据传递给一个JSP页面 该对象含有只能由指定的 JSP“错误处理页面” 访问的异常数据 该对象提供对输出流的访问 该对象代表JSP页面对应的Servlet类实例 该对象是JSP页面本身的上下文,它提供了唯 一一组方法来管理具有不同作用域的属性,这 些API在实现JSP自定义标签处理程序时非常有 用 该对象提供对HTTP请求数据的访问,同时还 提供用于加入特定请求数据的上下文 该对象允许直接访问 HttpServletReponse 对象, 可用来向客户端输入数据 该对象可用来保存在服务器与一个客户端之间 需要保存的数据,当客户端关闭网站的所有网 页时,session变量会自动消失

关于RequestDispatcher

RequestDispatcherRequestDispatcher是一个Web资源的包装器,可以用来把当前request传递到该资源,或者把新的资源包括到当前响应中。

RequestDispatcher接口中定义了两个方法:include/forward由于<jsp:include>只能指定固定的jsp文件名,不能动态指定jsp文件名。

我们需要把<jsp:include>翻译为Java code –RequestDispatcher.include();用法:<% request.getRequestDispatcher(filename).include(request, response); />服务器端的重定向可以有两种方式,一是使用HttpServletResponse的sendRedirect()方法,一是使用RequestDispatcher的forward()方法.HttpServletResponse.sendRedirect()方法将响应定向到参数location指定的、新的URL。

location可以是一个绝对的URL,如response.sendRedirect("")也可以使用相对的URL。

如果location以“/”开头,则容器认为相对于当前Web应用的根,否则,容器将解析为相对于当前请求的URL。

这种重定向的方法,将导致客户端浏览器的请求URL 跳转。

从浏览器中的地址栏中可以看到新的URL地址,作用类似于上面设置HTTP 响应头信息的实现。

RequestDispatcher.forward()方法将当前的request和response重定向到该RequestDispacher指定的资源。

这在实际项目中大量使用,因为完成一个业务操作往往需要跨越多个步骤,每一步骤完成相应的处理后,转向到下一个步骤。

比如,通常业务处理在Servlet中处理,处理的结果转向到一个JSP页面进行显示。

attachbasecontext 调用流程

attachbasecontext 调用流程(原创实用版)目录1.attachBaseContext 概述2.attachBaseContext 的调用流程3.attachBaseContext 的应用示例4.attachBaseContext 的优点与局限性正文一、attachBaseContext 概述attachBaseContext 是 Java 中的一个方法,主要用于将一个对象添加到应用程序上下文中。

在 Java Web 开发中,这个方法被广泛应用于将一个对象(通常是一个 JavaBean)添加到 Servlet 的请求或会话属性中,以便在后续的处理过程中使用。

二、attachBaseContext 的调用流程1.首先,创建一个 JavaBean 对象。

这个对象可以是一个普通的 Java 类,只要它遵循 JavaBean 的命名规范(即所有的属性都以"property"为前缀,并且属性的 getter 和 setter 方法都遵循一定的命名规范)。

2.然后,创建一个 Context 对象。

在 Servlet 中,可以通过调用getServletContext() 方法获取到当前 Servlet 的上下文对象。

3.接着,使用 Context 对象的 setAttribute() 方法将 JavaBean 对象添加到上下文中。

这个方法接受两个参数,一个是属性名,一个是要添加的 JavaBean 对象。

4.最后,使用 Context 对象的 getAttribute() 方法从上下文中获取 JavaBean 对象。

这个方法同样接受两个参数,一个是属性名,一个是要获取的 JavaBean 对象。

三、attachBaseContext 的应用示例以下是一个使用 attachBaseContext 方法将用户信息添加到Servlet 请求属性中的示例:```java// 创建一个 UserJavaBean 对象UserJavaBean user = new UserJavaBean();user.setUsername("John");user.setPassword("123456");// 获取 Servlet 的上下文对象ServletContext servletContext = getServletContext();// 将 UserJavaBean 对象添加到 Servlet 请求属性中servletContext.setAttribute("user", user);// 从 Servlet 请求属性中获取 UserJavaBean 对象UserJavaBean retrievedUser = (UserJavaBean)servletContext.getAttribute("user");```四、attachBaseContext 的优点与局限性attachBaseContext 的优点在于它可以将一个对象添加到 Servlet 的请求或会话属性中,使得这个对象可以在整个请求处理过程中被多次访问和使用。

专升本期末单选多选

答案C
题目17用户使用POST方式提交的数据中存在汉字(使用GBK字符集),在Servlet中需要使用下述______语句处理。
选择Arequest.setCharacterEncoding("GBK");
选择Brequest.setContentType("text/html;charset=GBK");
选择Arequest.getParameter("aihao").length
选择Brequest.getParameter("aihao").size()
选择Crequest.getParameterValues("aihao").length
选择Drequest.getParameterValues("aihao").size()
ACookie保存在客户端BCookie可以被服务器端程序修改
CCookie中可以保存任意长度的文本D浏览器可以关闭Cookie功能
答案ABD
题目2HttpServletRequest的______方法可以得到会话。
AgetSession() BgetSession(boolean) CgetRequestSession() DgetHttpSession()
选择C通常需要覆盖service()方法
选择D通常需要在web.xml文件中声明<servlet>和<servlet-mapping>两个元素
答案ABD
题目8下列关于Servlet生命周期的说法正确的是______。
选择A构造方法只会调用一次,在容器启动时调用
选择Binit()方法只会调用一次,在第一次请求此Servlet时调用

web.xml中的listener、filter、servlet加载顺序及其详解

web.xml中的listener、filter、servlet加载顺序及其详解在项⽬中总会遇到⼀些关于加载的优先级问题,刚刚就遇到了⼀个问题,由于项⽬中使⽤了quartz任务调度,quartz在web.xml中是使⽤listener进⾏监听的,使得在tomcat启动的时候能马上检查数据库查看那些任务未被按时执⾏,⽽数据库的配置信息在是在web.xml中使⽤servlet配置的,导致tomcat启动后在执⾏quartz任务时报空指针,原因就是servlet中的数据库连接信息未被加载。

⽹上查询了下web.xml中配置的加载优先级:⾸先可以肯定的是,加载顺序与它们在 web.xml ⽂件中的先后顺序⽆关。

即不会因为 filter 写在 listener 的前⾯⽽会先加载 filter。

最终得出的结论是:listener -> filter -> servlet同时还存在着这样⼀种配置节:context-param,它⽤于向 ServletContext 提供键值对,即应⽤程序上下⽂信息。

我们的 listener, filter 等在初始化时会⽤到这些上下⽂中的信息,那么 context-param 配置节是不是应该写在 listener 配置节前呢?实际上 context-param 配置节可写在任意位置,因此真正的加载顺序为:context-param -> listener -> filter -> servlet对于某类配置节⽽⾔,与它们出现的顺序是有关的。

以 filter 为例,web.xml 中当然可以定义多个 filter,与 filter 相关的⼀个配置节是filter-mapping,这⾥⼀定要注意,对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节⽽⾔,filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档