您的位置:首页 > 运维架构 > Tomcat

android实例讲解----Tomcat部署Web应用方法总结

2014-04-20 10:08 726 查看
 

参考文档:http://blog.csdn.net/yangxueyong/article/details/6130065 Tomcat部署Web应用方法总结

           

一、架构介绍

在介绍这个之前,首先介绍下什么是ORM框架?

对象关系模型。或者称为映射。ORM主要是使得数据库中的关系数据映射为程序中的对象的桥梁。

MyBatis是另外一款优秀的ORM框架,前身为iBATIS。

整个架构图:





上面这个图讲的是,如何通过mybatis实现orm,即对象与关系模型之间的转换。

我们是通过java里面的接口类与.xml里面的配置文件实现的。

如下面的文件所示:





依据从上到下的顺序各个文件内容如下:

1)



packagezhuxuekui.data;


[code] 

importjava.util.List;


 


importzhuxuekui.model.Poi;


 


publicinterfacePoiMapper{




/*


*存储poi信息


*/


voidinsertPoi(Poipoi);




/*


*获取Poi列表,如果username为空则返回所有的poi信息


*/


List<Poi>getPoi(Stringusername);




}

[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

2)



packagezhuxuekui.data;


[code] 

importzhuxuekui.model.User;


 


publicinterfaceUserMapper{




UserselectUser(Stringusername);






}

[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}3)



<?xmlversion="1.0"encoding="UTF-8"?>


[code]<!DOCTYPEconfiguration

PUBLIC"-//mybatis.org//DTDConfig3.0//EN"


"http://mybatis.org/dtd/mybatis-3-config.dtd">


<configuration>


<typeAliases>


<typeAliastype="zhuxuekui.model.User"alias="User"/>


<typeAliastype="zhuxuekui.model.Poi"alias="Poi"/>


</typeAliases>




<environmentsdefault="development">


<environmentid="development">


<transactionManagertype="JDBC"/>//事务管理器


<dataSourcetype="POOLED">


<propertyname="driver"value="com.mysql.jdbc.Driver"/>


<propertyname="url"value="jdbc:mysql://127.0.0.1:3306/Poi?characterEncoding=UTF-8"/>


<propertyname="username"value="root"/>


<propertyname="passward"value="123456"/>


</dataSource>


</environment>


</environments>


<mappers>


<mapperresource="zhuxuekui/data/UserMapper.xml"/>


<mapperresource="zhuxuekui/data/PoiMapper.xml"/>


</mappers>


</configuration>

[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

自动化配置,实现ORM转换。通过mybatis实现java与db之间的连接。

4)



<?xmlversion="1.0"encoding="UTF-8"?>


[code]<!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">


<mappernamespace="zhuxuekui.data.PoiMapper">


 


<resultMapid="PoiItemMap"type="Poi">


<resultproperty="id"column="id"/>


<resultproperty="name"column="name"/>


<resultproperty="city"column="city"/>


<resultproperty="address"column="address"/>


<resultproperty="phoneNum"column="phone_num"/>


<resultproperty="lat"column="lat"/>


<resultproperty="lon"column="lon"/>


<resultproperty="username"column="username"/>


</resultMap>


 


 


<selectid="getPoi"resultMap="PoiItemMap">


select*frompoi


<iftest="value!=null">


whereusernamelike#{value}


</if>


</select>


 


<insertid="insertPoi"parameterType="Poi">


insertintopoi


(id,name,city,address,phone_num,lat,lon,username)


values


(#{id},#{name},#{city},#{address},#{phoneNum},#{lat},#{lon},#{username})


</insert>


</mapper>

[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

5)



<?xmlversion="1.0"encoding="UTF-8"?>


[code]<!DOCTYPEmapperPUBLIC"-//mybatis.org//DTDMapper3.0//EN"

"http://mybatis.org/dtd/mybatis-3-mapper.dtd">


<mappernamespace="zhuxuekui.data.UserMapper">


<resultMapid="userResultMap"type="User">


<resultproperty="name"column="username"></result>


<resultproperty="email"column="email"></result>


</resultMap>




<selectid="selectUser"parameterType="String"


resultMap="userResultMap">


select


*


fromuserwhereusername=#{username}


</select>




</mapper>





[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

整体结构体如下:

 



 

二、程序讲解

1、在程序开发当中,我们需要使用相对路径,绝对路径不利于他人使用。

比如下方的packages包,我们需要建立一个packages文件夹,然后将这些jar直接拖到这个文件夹下面。

然后,右击构建路径---配置构建路径---添加JAR。如图所示,找到我们刚刚添加的jar包。添加引用。注:这就是相对路径,提高了重用性。









2、看下面的程序





packagezhuxuekui.model;

publicclassPoi{

publicStringid;

publicStringname;

publicStringcity;

publicStringaddress;

publicStringphoneNum;

publiclonglat;

publiclonglon;

publicStringusername;

}


没有用private,所以我们可以不用get与set方法。

这里只有一个public修饰,只是为了测试,所以不用get与set方法了。

3、如何通过配置文件链接java与mysql。

数据是怎么来的,这是我们需要关心的。









.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

通过id以及一些sql语句实现。xml(配置文件)里面的id与java里面的接口类里面的函数是一一对应的。

然后xml配置里面也有一些个sql语句与mysql相连接。

4、configuration.xml文件介绍

<?xmlversion="1.0"encoding="UTF-8"?>


[code]<!DOCTYPEconfiguration

PUBLIC"-//mybatis.org//DTDConfig3.0//EN"


"http://mybatis.org/dtd/mybatis-3-config.dtd">


<configuration>


<typeAliases>//起别名,相当于C++里面的typedef。


<typeAliastype="zhuxuekui.model.User"alias="User"/>//输出的


<typeAliastype="zhuxuekui.model.Poi"alias="Poi"/>


</typeAliases>


//java开发环境,开发,测试,预上线,上线。


<environmentsdefault="development">


<environmentid="development">


<transactionManagertype="JDBC"/>//事物,业务处理器


<dataSourcetype="POOLED">//合并的


<propertyname="driver"value="com.mysql.jdbc.Driver"/>

下面URL这句话告诉我们,通过什么方式,走什么协议,打开在哪的,哪一个数据库,他的编码是什么

通过jdbc方式,走mysql的数据访问协议,打开本地的3306端口的Poi数据库,以utf8编码方式打开。



<propertyname="url"value="jdbc:mysql://127.0.0.1:3306/Poi?characterEncoding=UTF-8"/>


<propertyname="username"value="root"/>数据库的


<propertyname="passward"value="123456"/>


</dataSource>


</environment>


</environments>


<mappers>


<mapperresource="zhuxuekui/data/UserMapper.xml"/>//路径


<mapperresource="zhuxuekui/data/PoiMapper.xml"/>


</mappers>


</configuration>

[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

 

5、如何把java代码挂到tomcat上去

1)、更改此目录下的E:\ProgramFiles\ApacheSoftwareFoundation\Tomcat7.0\conf 中的service.xml文件,添加一行 

<Hostname="localhost"appBase="webapps"
unpackWARs="true"autoDeploy="true">
<Contextpath=""docBase="E:/Users/zhuxuekui/workspace/servletDemo/webapp"
reloadable="true"/>


.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

docBase就是加载你的路径的,可以是相对路径,也可以是绝对路径。这个是写死的,后面会自动加载后面的WEB-INF后面的web.xml文件里面的内容。

注意两点:必须要重启电脑,路径必须要写对。是/。不是其他什么。

 

方法如下:

让tomcat只运行conf/server.xml中指定的web应用

可以有以下2种办法:

实现一:

1)将要部署的WEB应用放在webapps以外的路径,并在server.xml相应的Context中的docBase指定.

2)删除webapps中的所有文件夹,以及conf/catalina/localhost下所有xml文件. 
注:webapps是server.xml中的Host元素的appBase属性的值.

实现二:

修改server.xml中Host元素的属性,添加或修改:deployXML="false"deployOnStartup="false"autoDeploy="false"

含义:

deployXML="false":不部署conf/catalina/localhost下的xml相应的WEB应用

deployOnStartup="false":tomcat启动时,不部署webapps下的所有web应用

    autoDeploy="false" :避免tomcat在扫描改动时,再次把webapps下的web应用给部署进来.

注:

Tomcat中webapps目录下不能直接存放网页格式的文件,否则无法访问到该文件,必须有子目录才能访问该网页文件。

例如:我们直接将index.html放在webapps目录中,通过浏览器http://localhost:8080/index.html是无法访问到index.html的。而必须要webapps/petweb/index.html才可以通过http://localhost:8080/petweb/index.html访问到index.html页面。

2)、在项目中建立指定的目录,如下所示。

这样一来,我们编译完之后,不是在bin之下了,可以删掉bin(也可以不删)。建立web.xml文件,它是在WEB-INF下面。

web.xml就是tomcat与servlet的一个桥梁。





其内容为:

<?xmlversion="1.0"encoding="UTF-8"?>


[code]<web-app>

<servlet>


<servlet-name>login</servlet-name>//给servlet起一个名字


<servlet-class>zhuxuekui.service.SrvUser</servlet-class>//执行的是哪一个类


<load-on-startup>1</load-on-startup>//当tomcat运行时候就预加载


</servlet>


 


<servlet-mapping>


<servlet-name>login</servlet-name>


<url-pattern>/login</url-pattern>//url的表达式,访问login时候执行这个表达式


</servlet-mapping>


</web-app>

[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

写完这个之后,我们要写zhuxuekui.service.SrvUser.java.这个就是我们自己写的一个servlet。

什么是servlet?

    其实他就是一个壳子,它是java提供的webservice开发的一种接口。我们如果想要再tomcat上门挂一个服务的话,只需要实现类似于httpservlet这么一个接口即可。然后通过web.xml配置文件将我们所写的servlet的实例挂载到tomcat上面去。servlet里面有很多的方法,比如有service方法、doget方法、dopost方法等。


packagezhuxuekui.service;


[code] 

importjava.io.IOException;


 


importjavax.servlet.ServletException;


importjavax.servlet.http.HttpServlet;


importjavax.servlet.http.HttpServletRequest;


importjavax.servlet.http.HttpServletResponse;


 


importorg.apache.ibatis.session.SqlSession;


 


importzhuxuekui.data.UserMapper;


importzhuxuekui.model.User;


 


/**


*最简单的Servlet


*


*/


publicclassSrvUserextendsHttpServlet{


 


privatestaticfinallongserialVersionUID=1L;


 


@Override


protectedvoidservice(HttpServletRequestreq,HttpServletResponseres)


throwsServletException,IOException{


res.getWriter().println("HelloWorld||||!");


super.service(req,res);


}


 


@Override


protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseres)


throwsServletException,IOException{


//Stringresource="/com/arthur/data/Configuration.xml";


//Readerreader;


//try{


//reader=Resources.getResourceAsReader(resource);


//Constants.SQL_FACTORY=newSqlSessionFactoryBuilder()


//.build(reader);


//}catch(Exceptione){


//e.printStackTrace();


//e.printStackTrace(res.getWriter());


//}


}


 


//@Override


//protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)


//throwsServletException,IOException{


//StringuserName=req.getParameter("username");


//SqlSessionsession=Constants.SQLFactory().openSession();


//UserMappermapper=session.getMapper(UserMapper.class);


//Useruser=mapper.selectUser(userName);


//if(user!=null){


//resp.setStatus(200);


//}else{


//resp.sendError(345,"用户名密码不正确!");


//}


//}


 


}


 

[/code]

.csharpcode,.csharpcodepre
{
font-size:small;
color:black;
font-family:consolas,"CourierNew",courier,monospace;
background-color:#ffffff;
/*white-space:pre;*/
}
.csharpcodepre{margin:0em;}
.csharpcode.rem{color:#008000;}
.csharpcode.kwrd{color:#0000ff;}
.csharpcode.str{color:#006080;}
.csharpcode.op{color:#0000c0;}
.csharpcode.preproc{color:#cc6633;}
.csharpcode.asp{background-color:#ffff00;}
.csharpcode.html{color:#800000;}
.csharpcode.attr{color:#ff0000;}
.csharpcode.alt
{
background-color:#f4f4f4;
width:100%;
margin:0em;
}
.csharpcode.lnum{color:#606060;}

弄完这个后,我们就需要编译了,项目---清理,然后会在我们建立的webapp下面生成.class等文件。

弄完这些后,我们就需要在浏览器中访问,界面如下:





 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: