一、web工程创建
1.创建web工程(简单方式在Myeclipse环境中直接直接创建web工程)
2.将web工程发布到tomcat中运行,运行正常
3.在浏览器中测试成功
二、web工程集成struts2
1.在 “一”中,添加struts2
2.选择将要使用的struts2 的版本:(选择2.0.6)
3.将struts2 将要使用的 jar拷贝至项目中;
commons-fileupload-1.2.2.jar
commons-logging-1.0.4.jar 提供java日志操作API,抽象出日志接口,方便操作
freemarker-2.3.8.jar freemarker模板视图支持,struts2标签主题支持
ognl-2.6.11.jar OGNL表达式支持
struts2-core-2.0.14.jar struts2框架
xwork-2.0.7.jar 命令模式框架支持
javassist-3.11.0.GA.jar
commons-io-2.0.1.jarIO操作
commons-langs-3.1.jar 提供java常用操作API,比如字符串处理,XML解析等
4.在web.xml添加对struts2 的支持
添加struts2 的核心过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<!-- DTD可以从任何一个web文件中拷贝出来,例如从tomcat中拷贝 -->
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
5.在src下穿件struts.xml 文件
头文件 可以去 struts jar中拷出来
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<package name="test" extends="struts-default" namespace="/struts2"></package>
</struts>
5.1 拷贝 default.properties 文件到 struts.xml相同目录,修改配置文件内容,修改编码 ,spring支持,上传文件文件大小 ,开发模式 等属性
6.重启tomcat,在浏览器中测试运行正常就好;
写一个 测试 类,测试 struts 转向成功
三、web工程集使用servlet(问题一:servlet在struts2环境中怎么应用的?)
添加 servlet-api.jar 包;
tomcat 本身就是一个web
四、在web工程中使用Logger
下载 apache log4j 包
引用log4j jar包,
在class目录下配置log4j.properties配置文件(问题二:log4j 的配置文件是怎么读入程序中使用的,为什么将log4j.properties文件放置在classes目录下就可以使用了)
在java类中 调用:
private static final Logger log=Logger.getLogger(类名.class);
五、为web工程添加filter
编写java类,必须 实现 Filter 接口方法;
在web.xml中定义 filter
配置filter 映射的路径(参照struts2配置)
六、 为web工程添加拦截器(Interceptor)
(问题四:为action添加拦截器之后再action中原来可以得到的JSP页面的参数 得不到了?)
编写java类,实现Interceptor接口
在类中编写处理逻辑
在action 中配置拦截器
<interceptors>
<interceptor name="testInterceptor" class="com.younglibin.www.lb.TestInterceptor"></interceptor></interceptors>
为action添加拦截器调用
<action name="loginWithInter" class="com.younglibin.www.lb.action.LoginAction" method="login">
<interceptor-ref name="testInterceptor"></interceptor-ref>
<result name="success">/page/struts2/interceptor.jsp</result>
</action>
以上配置是会出问题(因为为action添加了拦截器后,默认的拦截器就会失效,也就是说struts2中的内置拦截器就不起作用,但是在struts2中大部分业务还是通过默认拦截器实现的,例如param拦截器,如果不使用,页面表单提交,参数在action中得不到)
所以在使用拦截器时,一定要配置添加上默认的拦截器,
<interceptors>
<interceptor name="testInterceptor" class="com.younglibin.www.lb.TestInterceptor"></interceptor>
<interceptor-stack name="test">
<interceptor-ref name="defaultStack"/>
<interceptor-ref name="testInterceptor"/>
</interceptor-stack>
</interceptors>
<action name="nomal" class="com.younglibin.www.lb.action.LoginAction" >
<interceptor-ref name="test"></interceptor-ref>
<result name="success">/page/struts2/welcome.jsp</result>
<result name="error">/page/struts2/loginNomal.jsp</result>
</action>
启动web工程,拦截器添加完成
拦截器是作用在整个action中的,也可以为某个方法提供拦截器,需要实现,
该接口提供了 doInterceptor方法,实现该方法和原来拦截器方法没有区别;
七、为web工程添加监听器(Listener) (问题三:filter、interceptor、LIstener 三者的作用及区别和联系)
为Web添加Listener的步骤:
1.建立Listener实现类
2.在web.xml中配置Listener
八、在Struts2中 struts2 的Action是如何访问Servlet API 的:(问题四:在action中如何访问servlet的属性,也就是JSPServlet中的属性,例如,session、request、、、、、)
Struts2的Action没有与任何的ServletAPI 耦合,这是Struts2 的改良支出,因为Action类不在与ServletAPI 耦合,从而能更轻松的测试Action
但是对于Web工程而言,不访问ServletAPI几乎是不可能的,所以Struts2 提供了一种更轻松的方式来访问Servlet API即ActionContext,Struts2提供了ActionContext类来访问Servlet API 。
具体实现参照ActionContext 类的API ;
核心代码:
ActionContext act = ActionContext.getContext();
act.getApplication();
act.getSession();
HttpServletRequest request = (HttpServletRequest) act.get(ServletActionContext.HTTP_REQUEST);
HttpServletResponse response = (HttpServletResponse) act.get(ServletActionContext.HTTP_RESPONSE);
Action 直接访问 Servlet API
action 实现 ServletResponseAware 即可 访问 Response
九、Web工程添加Ajax支持
Ajax使用:
使用XMLHttpRequest发送对象的步骤:
1. 为得到XMLHttpRequest对象实例的一个引用,可以创建一个新的实例,也可以访问包含有XMLHttpRequest实例的一个变量。
2. 告诉XMLHttpRequest对象,哪个函数会处理XMLHttpRequest对象状态的改变,为此要把对象的onreadystatechange属性设置为指向JavaScript函数的指针。
3. 指定请求的属性。XMLHttpRequest对象的open()方法会指定将发出的请求。open()方法取3个参数:一个是指示所用方法(通常是GET或POST)的串;一个是表示目标资源URL的串;一个是Boolean值,指示请求是否是异步的。
4. 将请求发送给服务器。XMLHttpRequest对象的send()方法把请求发送到指定的目标资源。send()方法接受一个参数,通常是一个串或一个DOM对象。这个参数作为请求体的一部分发送到目标URL。当向send()方法提供参数时,要确保open()中指定的方法是POST。如果没有数据作为请求体的一部分被发送,则使用null。
1.使用ajax第一步创建XMLHttpRequest 对象
因为不同浏览器中XMLHttpRequest 对象不同所以第一步,根据使用的浏览器创建不同的XMLHttpRequest对象:
ajax._createXMLHttpRequest=function()
{
if(window.ActiveXObject)
{
var ver=["MSXML2.XMLHTTP.6.0","MSXML2.XMLHTTP.5.0","MSXML2.XMLHTTP.4.0",
"MSXML2.XMLHTTP.3.0","MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
for(var i=0;i<ver.length;i++)
{
try
{
return new ActiveXObject(ver[i]);
}
catch(e)
{
continue;
}
}
}
else if(window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
else
{
throw new Error("对不起,您的浏览器不支持Ajax!");
}
}
2、 封装 Ajax的 post和get方法
if(!ajax)
{
var ajax={};
}
ajax.sendGetRequest=function(url,fnRollback,bAsync)
{
var oXMLHttpRequest=ajax._createXMLHttpRequest();
var async=true;
if(typeof bAsync=="boolean")
{
async=bAsync;
}
oXMLHttpRequest.open("get",url,async);//默认异步请求
if(async)//异步
{
oXMLHttpRequest.onreadystatechange=function()
{
if(oXMLHttpRequest.readyState==4)//数据接收完毕
{
if(oXMLHttpRequest.status==200)//OK
{
fnRollback(oXMLHttpRequest);
}
}
};
}
oXMLHttpRequest.send(null);
if(!async)//同步
{
fnRollback(oXMLHttpRequest);
}
}
ajax.sendPostRequest=function(url,params,fnRollback,bAsync)
{
var oXMLHttpRequest=ajax._createXMLHttpRequest();
var async=true;
if(typeof bAsync=="boolean")
{
async=bAsync;
}
oXMLHttpRequest.open("post",url,async);//默认异步请求
if(async)//异步
{
oXMLHttpRequest.onreadystatechange=function()
{
if(oXMLHttpRequest.readyState==4)//数据接收完毕
{
if(oXMLHttpRequest.status==200)//OK
{
fnRollback(oXMLHttpRequest);
}
}
};
}
oXMLHttpRequest.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
oXMLHttpRequest.send(params);
if(!async)//同步
{
fnRollback(oXMLHttpRequest);
}
}
3.在web程序中使用 ajax的话 九可以直接调用 这里的 post和 get方法 ;
问题一:
理解1.在struts2 中servlet中使用的HTTPRequest 可以使用ActionContxt 来获得!将其放置在拦截器中即可;
web中集成struts2 后用户信息可以通过struts2的拦截器在拦截器中通过使用ActionContext来过的Servlet容器的变量,
把jsp中的servlet数据在后台拦截到;
问题二:
问题三:
问题四:
因为 action中的得到JSP页面参数是通过Action默认拦截器得到的,如果使用了自定义的拦截器,
如果自定义拦截器没有继承默认拦截器,程序就不会调用默认拦截器,所以得不到参数;
在struts2中默认拦截器中的params拦截器 是用来获得参数的;
拦截器作用在调用这个action的方法中;
面向抽象接口的编程方式:灵活
相关推荐
2. 论基于Web的数据库应用系统的开发技术 3.论企业内部网的安全策略企业网络的建设 4.论电子商务的安全 5.论ERP系统的开发与应用 6.论中间件技术在软件开发中的作用 7.论面向对象开发技术及其应用 8.论信息管理系统...
《开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)》详细介绍了Java Web软件架构中的各种开发技术。主要内容包括:以MySQL为数据库、Tomcat为Web服务器、Eclipse为开发工具、CVS为版本控制工具...
本书较为全面地介绍J2EE Web应用开发的程序设计技术。书中介绍了相关的知识点,然后讲解网上购物子系统、公告管理系统、网上书店、BBS系统、信息发布平台、学生课程及成绩管理系统等8个实用的系统。
开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)(第2版)的完整版本,带封面和目录、前言,一共六个压缩文件,这是第6个。
开发者突击:Java Web主流框架整合开发:J2EE+Struts+Hibernate+Spring 部分例子源代码 及数据库
本书内容主要来自作者多年的软件开发和教学经验,通过实例由浅入深地介绍eclipse、struts、hibernate和spring的基本原理和应用,以及它们的整合应用,是一本强调实践技能的实用性指导图书。 本书的内容主要包括:...
开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)(第2版)的完整版本,带封面和目录、前言,一共六个压缩文件,这是第4个。
开发者突击:Java Web主流框架整合开发(J2EE+Struts+Hibernate+Spring)(第2版)的完整版本,带封面和目录、前言,一共六个压缩文件,这是第3个。
开发者突击_Java+Web主流框架整合开发_J2EE+Struts+Hibernate+Spring+源代码
《开发者突击:Java Web主流框架整合开发(第2版)(含CD光盘1张)》是畅销书《开发者突击:Java Web主流框架整合开发(J2EE+Struts+ Hibernate+Spring)》的第2版,全面地讲解了Java Web开发中的流行技术和软件架构,...
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
《开发者突击:Java Web主流框架整合开发(第2版)(含CD光盘1张)》是畅销书《开发者突击:Java Web主流框架整合开发(J2EE+Struts+ Hibernate+Spring)》的第2版,全面地讲解了Java Web开发中的流行技术和软件架构,...
开发者突击:Java Web主流框架整合开发:J2EE+Struts+Hibernate+Spring --书中所有例子的源代码,包括数据库。
Web服务为第三方物流的动态电子...为了阐述基于J2EE的Web服务动态集成化第三方物流解决方案,首先在阐述了Web服务集成概念与理论的基础上,以物流订单处理的过程为例,研究了基于Web 服务的第三方物流业务集成方法。
麻雀虽小,五脏具全,这是本人在学习框架技术时做的小项目,里面整合了struts,hibernate,spring,AJAX技术,实现了一个简单的登陆框,和用户名的验证.希望能帮助到更多的J2EE爱好者,由于本人属初学,希望大家多指教.
web 源码 本开源仓库已经开源的JavaWeb进阶项目 一 SSM项目中整合Echarts开发 项目介绍: 这里只是以知乎赞同数TOP10为例子,带着大家学习了SSM环境的搭建以及代码的编写,代码中有很详细的注释。通过本例子,大家...
开发者突击:Java Web主流框架整合开发(第2版).pdf
第一章 J2EE快速入门 1.1 J2EE概述 1.1.1 J2EE的来源 1.1.2 J2EE整体框架 1.1.3 从J2EE到JavaEE 1.2 J2EE组件 1.2.1 客户端组件 1.2.2 Web组件 1.2.3 业务逻辑组件 1.3 J2EE容器 1.3.1 容器服务 1.3.2 容器类型 1.4 ...
第三周的课程介绍了企业应用的安全性和完、XML文档转换、模式、整合外部资源、WEB服务等。 本书适合于有一定Java编程经验的程序员阅读。通过本书的学习,能将您的Java技能提高到一个新的水平。