Eclipse+Struts2+Spring+MyBatis+json+gson环境搭建.docx
《Eclipse+Struts2+Spring+MyBatis+json+gson环境搭建.docx》由会员分享,可在线阅读,更多相关《Eclipse+Struts2+Spring+MyBatis+json+gson环境搭建.docx(60页珍藏版)》请在冰豆网上搜索。
Eclipse+Struts2+Spring+MyBatis+json+gson环境搭建
1.准备安装文件
以下为需要准备的文件清单,从相应网址下载到本地,表格中列出的版本号是截止到2012年5月6日的最新版本。
序号
库类型
版本
文件名
下载地址
1
Struts2
2.3.3
struts-2.3.3-all.gz
http:
//struts.apache.org/
2
Spring
3.1.0
spring-framework-3.1.1.RELEASE-with-docs.zip
http:
//springframework.org/
3
Mybatis
3.1.1
mybatis-3.1.1-bundle.zip
mybatis-spring-1.1.1-bundle.zip
mybatis-generator-core-1.3.1-bundle.zip
4
jquery
1.7.2
jquery-1.7.2.js
4
Eclipse
EclipseIDEforJavaEEDevelopers,
eclipse-jee-indigo-SR2-win32.zip
http:
//www.eclipse.org/downloads/
5
tomcat
7.0.27
apache-tomcat-7.0.27-windows-x86.zip
http:
//tomcat.apache.org/
Struts2
下载包含了库和代码、例子的全包:
struts-2.3.3-all.gz,大约在76m,文件较大,但其中的空应用例程可作为直接拷贝的参考。
Spring
下载包含了库和代码、例子的全包:
spring-framework-3.1.1.RELEASE-with-docs.zip
MyBatis
2.新建WEB工程
选择WEB下DynamicWebProject类型的工程:
工程命名为EMS,其它选项保持默认。
文件夹名保持默认
勾上生成web.xml选项,其它保持默认。
最后得到一个如下组织的WEB工程.
补充:
在JavaResources/src目录上通过右键菜单将JAVA代码下编译输出目录修改至WebContent/WEB-INF/classes目录,与myEclipse的默认方式保持一致,便于实时发布,如果不做这一步class等文件不会自动输出到WEB-INF下。
3.配置Tomcat服务器
切换Servers页签:
※建议不采用eclipse的应用发布功能,改用修改Tomcat配置文件的方式来实现发布,因此这里暂时不作选择。
在Eclipse中测试启动Tomcat服务器:
采用修改Tomcat配置的方式来发布应用(建议采用,这是相对快捷的发布
1、双击tomcat服务器,打开配置选项,将ServerLocation选项置为第二个:
2、用文本编辑器打开:
D:
\tomcat\apache-tomcat-7.0.27\conf\server.xml文件,在Host节点之上增加虚拟目录描述:
…
--Accesslogprocessesallexample.
Documentationat:
/docs/config/valve.html
Note:
Thepatternusedisequivalenttousingpattern="common"-->
\workspace\EMS\WebContent"reloadable="true"/>
3、在WebContent目录下新建一个默认JSP页面:
NewFile.jsp,打印一行信息:
HelloWorld!
InserttitlehereHelloWorld!
4、在eclipse中重启tomcat,在浏览器中敲入URL:
http:
//localhost:
8080/ems/NewFile.jsp
验证是否看到正确的输出信息。
配置TOMCAT管理界面
打开:
D:
\tomcat\apache-tomcat-7.0.27\conf\tomcat-users.xml文件,加入:
之后通过admin/admin即可登陆管理界面。
4.配置Structs2
搭建环境
从已下载的struts-2.3.3-all.gz文件中解压出自带的一个空例程:
struts2-blank,直接从展开的文件夹中复制内容过来:
1)复制struts2-blank\WEB-INF\lib目录下的所有JAR包到该工程的WEB-INF/lib目录下
2)打开struts2-blank\WEB-INF\web.xml,复制其中过滤器到该工程相同目录下web.xml,,让struts2在tomcat启动的时候加载:
…
struts2
org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
struts2
/*
…
3)重启Tomcat服务,观察输出的日志,当发现启动日志中包含有“org.apache.struts2”关键字,且无异常抛出,说明struts2的装载过程正常。
编写一个action验证配置正确性
1)在src下新建action包:
com.jsdz.action,包中新建测试action类,该类继承至ActionSupport,命名为:
LoginAction,用作登陆跳转:
packagecom.jsdz.action;
importcom.opensymphony.xwork2.ActionSupport;
publicclassLoginActionextendsActionSupport{
privateStringusername;
privateStringpassword;
@Override
publicStringexecute()throwsException{
System.out.println("LoginActionexecuteinvoked!
");
if(username.equals("admin")&&password.equals("1234"))
{
System.out.println("userok");
returnSUCCESS;
}
else
{
System.out.println("userinvalid");
returnINPUT;
}
}
publicStringgetUsername(){
returnusername;
}
publicvoidsetUsername(Stringusername){
this.username=username;
}
publicStringgetPassword(){
returnpassword;
}
publicvoidsetPassword(Stringpassword){
this.password=password;
}
}
2)在将LoginAction类配置到struts2的配置文件中,该文件同样可以从例程工程中拷贝过来简单修改:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"
"http:
//struts.apache.org/dtds/struts-2.3.dtd">
/main.jsp
/login.jsp
注意:
此时的action实例还是由struts自己来维护,class取值包含完整的路径。
3)新建两个JSP页面:
login.jsp(登陆页面)、main.jsp(登陆成功页面,提示用户登陆成功).流程说明:
用户输入用户名和密码,必须是admin/1234才给验证通过转到main.jsp页面,否则仍然返回到login.jsp页面。
login.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
Inserttitlehereformaction="login"namespace="/"theme="simple">
username:
textfieldname="username"size="20"/>
password:
passwordname="password"size="20"/>
submitlabel="submit">
submit>
form>
※注意:
标红的部分容易出错,namespace都带上相同的取值,s:
form的action上不带.action.
main.jsp
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
Inserttitlehere
用户:
${requestScope.username},欢迎您登陆
4)在浏览器中敲入http:
//localhost:
8080/ems/login.jsp进行验证.
增加异常处理机制
采用struts2自有的异常处理机制,避免所有地方加上try/catch。
1)增加包com.jsdz.exception,并在其中增加自定义业务异常类BusinessException.java。
packagecom.jsdz.exception;
publicclassBusinessExceptionextendsRuntimeException{
privatestaticfinallongserialVersionUID=0xc1a865c45ffdc5f9L;
publicBusinessException(StringfrdMessage){
super(createFriendlyErrMsg(frdMessage));
}
publicBusinessException(Throwablethrowable){
super(throwable);
}
publicBusinessException(Throwablethrowable,StringfrdMessage){
super(throwable);
}
privatestaticStringcreateFriendlyErrMsg(StringmsgBody){
StringprefixStr="抱歉,";
StringsuffixStr="请稍后再试或与管理员联系!
";
StringBufferfriendlyErrMsg=newStringBuffer("");
friendlyErrMsg.append(prefixStr);
friendlyErrMsg.append(msgBody);
friendlyErrMsg.append(suffixStr);
returnfriendlyErrMsg.toString();
}
}
2)增加包com.jsdz.interceptor,增加一个异常转化的拦截器类:
BusinessInterceptor.java。
packagecom.jsdz.interceptor;
importjava.io.IOException;
importjava.sql.SQLException;
importcom.jsdz.exception.BusinessException;
importcom.opensymphony.xwork2.ActionInvocation;
importcom.opensymphony.xwork2.interceptor.AbstractInterceptor;
publicclassBusinessInterceptorextendsAbstractInterceptor{
@Override
publicStringintercept(ActionInvocationinvocation)throwsException{
System.out.println("BusinessInterceptorintercept()invoked!
");
before(invocation);
Stringresult="";
try{
result=invocation.invoke();
}catch(DataAccessExceptionex){
thrownewBusinessException("数据库操作失败!
");
}catch(NullPointerExceptionex){
thrownewBusinessException("调用了未经初始化的对象或者是不存在的对象!
");
}catch(IOExceptionex){
thrownewBusinessException("IO异常!
");
}catch(ClassNotFoundExceptionex){
thrownewBusinessException("指定的类不存在!
");
}catch(ArithmeticExceptionex){
thrownewBusinessException("数学运算异常!
");
}catch(ArrayIndexOutOfBoundsExceptionex){
thrownewBusinessException("数组下标越界!
");
}catch(IllegalArgumentExceptionex){
thrownewBusinessException("方法的参数错误!
");
}catch(ClassCastExceptionex){
thrownewBusinessException("类型强制转换错误!
");
}catch(SecurityExceptionex){
thrownewBusinessException("违背安全原则异常!
");
}catch(SQLExceptionex){
thrownewBusinessException("操作数据库异常!
");
}catch(NoSuchMethodErrorex){
thrownewBusinessException("方法末找到异常!
");
}catch(InternalErrorex){
thrownewBusinessException("Java虚拟机发生了内部错误");
}catch(Exceptionex){
thrownewBusinessException("程序内部错误,操作失败!
");
}
after(invocation,result);
returnresult;
}
/**
*验证登陆等...
*@paraminvocation
*@return
*@throwsException
*/
publicvoidbefore(ActionInvocationinvocation)throwsException{
//...
}
/**
*记录日志等...
*@paraminvocation
*@return
*@throwsException
*/
publicvoidafter(ActionInvocationinvocation,Stringresult)throwsException{
//...
}
}
3)在WebContent目录下新建error.jsp,代表出错跳转的页面:
<%@pagelanguage="java"contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%>
<%@taglibprefix="s"uri="/struts-tags"%>
DOCTYPEhtmlPUBLIC"-//W3C//DTDHTML4.01Transitional//EN""http:
//www.w3.org/TR/html4/loose.dtd">
errorpropertyvalue="exception.message"/>
页面简单的打印出异常信息。
4)在struts.xml配置文件中加入拦截器及错误跳转指示:
xmlversion="1.0"encoding="UTF-8"?
>
DOCTYPEstrutsPUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.3//EN"
"http:
//struts.apache.org/dtds/struts-2.3.dtd">
--注册拦截器-->
--设置默认拦截器栈-->
--全局跳转页面-->
/error.jsp
--全局异常-->