如何搭建一个简单的服务器?
最近在做校科创的项目,项目中我主要负责Android客户端的开发,负责后端开发的同学还在努力搭建中,所以趁着这个空档先来学习一下怎么将客户端和后台对接起来,所以打算先搭建一个简易版的服务器用于测试。
本文主要介绍如何利用Tomcat和Struts进行简单服务器的搭建,客户端和服务器的具体对接方式参考我的文章《Okhttp3基本用法详解》。
1 Tomcat安装和配置
tomcat是一个开源而且免费的jsp服务器,可实现JavaWeb程序的装载,是配置JSP(Java Server Page)和JAVA系统必备的一款环境。
-
安装
从Tomcat官网下载Tomcat 7.0,解压压缩包
-
在Eclipse中配置Tomcat服务器
打开:Preferences(首选项) -> Server ->Runtime Environments -> Add Tomcat7.0 ->Apply
配置完成后可以在Server中看到刚刚配置好的服务器
2 Struts框架使用
Apache Struts 2是一个用于开发Java EE网络应用程序的开放源代码网页应用程序架构。和Tomcat配合使用。
-
安装
从Apache Struts官网下载struts(此处使用了低版本2.3),解压其中文件struts2-blank.war
-
在项目中使用Struts
**(1)**在Eclipse中新建Web Project/Dynamic Web Project
**(2)**在Web Content-> WEB-INF ->lib中拷贝struts2-blank同名文件夹中的.jar文件
**(3)**在Web Content的web.xml中加入filter内容(filter内容同样从struts2-blank中获取)
<filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> </filter> <filter-mapping> <filter-name>struts2</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
ps: 没有web.xml文件的话在该项目Java EE Tools中设置 GDDS
(4) 在项目src文件夹中新建struts.xml,该文件包含各种action
action标签写法如下:
<action name="名称" class="类名" method="方法名"></action>
(5) 新建类UserAction.java,用于封装各种方法
-
将新建的项目部署到服务器中
右击Tomcat服务器,选择Add and Remove,将新建的web应用程序部署到目录。
3 启动服务器
服务器右键-> Start,注意查看控制台状态,检查是否报错。
4 常用请求方法编写
-
获取客户端请求
HttpServletRequest request = ServletActionContext.getRequest();
-
服务端向客户端响应
HttpServletResponse response = ServletActionContext.getResponse();
-
向响应对象中写入内容
PrintWriter writer = response.getWriter(); writer.write("内容");
-
读取文件流(String)
ServletInputStream is=request.getInputStream(); StringBuilder sb=new StringBuilder(); int len=0; byte[] buf=new byte[1024]; while((len = is.read(buf))!=-1) { sb.append(new String(buf,0,len)); }
-
读取文件流(File)
ServletInputStream is=request.getInputStream(); String dir=ServletActionContext.getServletContext().getRealPath("files"); File file=new File(dir,"cat.png"); FileOutputStream fos=new FileOutputStream(file); int len=0; byte[] buf=new byte[1024]; while((len = is.read(buf))!=-1) { fos.write(buf,0,len); } fos.flush(); fos.close();
-
客户端从服务端中获取文件
FileUtils.copyFile(客户端目标文件夹, 服务端文件夹);
5 常见问题
-
无法将web应用程序部署到服务器目录
可能使jdk版本过高,降低jdk版本(项目属性-> Project Facet)
-
Tomcat版本和Dynamic Web Module版本匹配问题
Tomcat 7.0 匹配 Dynamic Web Module 3.0
-
类的包引入问题
手动在根目录lib包中引入与struts相关的jar包