杨教授工作室精心创作的优秀程序员职业提升必读系列资料
1. 1 实现在客户端程序中直接提交XML格式参数
1. 1. 1直接发送XML文件内容
下面采用直接发送XML文件内容的方式实现代码示例的实现过程和程序代码如下。
1、添加一个PostXMLHttpC lient类
1类名称为PostXMLHttpClient包名称为com.px1987.httpclient
2代码示例package com.px1987.httpclient;import java. io.File;import java. io. IOException;import java. io. InputStream;
杨教授工作室精心创作的优秀程序员职业提升必读系列资料import java. io.ObjectInputStream;import java.util.ArrayList;import java.util. Iterator;import java.util.List;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.HttpStatus;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpPost;import org.apache.http.entity.FileEntity;import org.apache.http. impl.client.DefaultHttpClient;import com.px1987.httpclient.vobject.UserInfoVO;public class PostXMLHttpClient {public PostXMLHttpClient() throws ClientProtocolException, IOException,ClassNotFoundException {
HttpClient httpClient = new DefaultHttpClient() ;
StringuserLoginTargetURL="http://127.0.0. 1:8080/webbank/deaxmlrequestservlet";
HttpPost onePostMethod = new HttpPost(userLoginTargetURL) ;
StringuserInfoXMLFileName=this.getClass() .getResource("/userInfo.xml") .getFile() ;
FileEntity xmlFileEntity = new FileEntity(new File(userInfoXMLFileName) ,
"text/xml;charset=\"gb2312\"") ; //与XML文件的编码保持一致性onePostMethod. setEntity(xmlFileEntity) ;
HttpResponse httpResponse =httpClient. execute(onePostMethod) ;int httpStatusCode=httpResponse.getStatusLine() .getStatusCode() ;if(httpStatusCode==HttpStatus.SC_OK) {
System.out.println(httpResponse.getStatusLine() ) ;//打印服务器返回的
杨教授工作室版权所有盗版必究 2/9页
杨教授工作室精心创作的优秀程序员职业提升必读系列资料状态
HttpEntity entity = httpResponse.getEntity() ;if (entity == null) {
System.out.println("服务器没有返回任何的信息") ;return;
}
InputStream oneInputStream = entity.getContent() ;
ObjectInputStream oneObjectInputStream=new ObjectInputStream(oneInputStream) ;
List<UserInfoVO> allUserInfos=
(ArrayList<UserInfoVO> )oneObjectInputStream.readObject() ;if(allUserInfos==null) {
System.out.println("服务器没有返回任何的信息") ;return;
}
Iterator<UserInfoVO> allItems=allUserInfos. iterator() ;while(allItems.hasNext() ) {
UserInfoVO oneUserInfoVO=(UserInfoVO)allItems.next() ;int type_User_AdminDigit=oneUserInfoVO.getType_User_Admin() ;String returnUserName=oneUserInfoVO.getUserName() ;
String returnUserPassWord=oneUserInfoVO.getUserPassWord() ;System. out.println(" 获 得 的 用 户 角 色 类 型 为 "+type_User_AdminDigit) ;
System. out.println("获得的用户名称为 "+returnUserName) ;System. out.println("获得的用户密码为 "+returnUserPassWord) ;}entity.consumeContent() ; //确保资源释放
}else{
杨教授工作室版权所有盗版必究 3/9页
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
System.out.println("方法执行过程中出现了错误") ;//打印服务器返回的状态
}onePostMethod.abort() ; //结束本次请求httpClient.getConnectionManager() . shutdown() ; ;//释放连接
}public static void main(String[] args) throws ClientProtocolException,IOException, ClassNotFoundException {
PostXMLHttpClient oneWebBankAppclient=new PostXMLHttpClient() ;
}
}
2、在项目的当前类路径下添加use rInfo.xml文件
1创建出该use rInfo.xml文件
2 userInfo.xml文件的内容如下
<?xml version="1.0" encoding="gb2312"?>
<userInfos>
<userinfo>
<userName>杨少波</userName>
<userPassWord>admin</userPassWord>
杨教授工作室版权所有盗版必究 4/9页
杨教授工作室精心创作的优秀程序员职业提升必读系列资料<typeUserAdmin>1</typeUserAdmin>
</userinfo>
</userInfos>
3、设计一个接收XML数据的服务器端的Servlet组件类DealXMLRequestServlet1类名称为DealXMLRequestServlet。包名称为com.px1987.httpclient. servlet
2 URL-Pattern设置为/deaxmlrequestservlet
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
4、编程该DealXMLRequestServlet程序类package com.px1987.httpclient. servlet;import java. io.BufferedReader;import java. io.ByteArrayInputStream;import java. io. IOException;import java. io. InputStream;import java. io.ObjectOutputStream;import java.util.ArrayList;import java.util. Iterator;import java.util.List;import javax. servlet.ServletException;import javax. servlet.ServletOutputStream;import javax. servlet.http.HttpServlet;import javax. servlet.http.HttpServletRequest;import javax. servlet.http.HttpServletResponse;import org. jdom.Document;import org. jdom.Element;import org. jdom.JDOMException;import org. jdom. input.SAXBuilder;
杨教授工作室版权所有盗版必究 6/9页
杨教授工作室精心创作的优秀程序员职业提升必读系列资料import com.px1987.httpclient.vobject.UserInfoVO;public class DealXMLRequestServlet extends HttpServlet {private static final long serialVersionUID = 1L;public DealXMLRequestServlet() {super() ;
}public void destroy() {super.destroy() ;
}public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
}public void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {
StringBuffer oneXMLStringBuffer = new StringBuffer() ;
String oneXMLLine = null;
BufferedReader reader = request.getReader() ;while( (oneXMLLine = reader.readLine() ) != null) {oneXMLStringBuffer.append(oneXMLLine) ;
}
String xmlTextContent =oneXMLStringBuffer. toString() ;
Document xmlDocument = null;
SAXBuilder oneSAXBuilder = new SAXBuilder() ;
InputStream oneInputStream=newByteArrayInputStream(xmlTextContent.getBytes() ) ;try {xmlDocument = oneSAXBuilder.build(oneInputStream) ;
} catch (JDOMException e) {e.printStackTrace() ;
}
杨教授工作室版权所有盗版必究 7/9页
杨教授工作室精心创作的优秀程序员职业提升必读系列资料List<UserInfoVO> allUserInfos=parseXMLDocumentTags(xmlDocument) ;ServletOutputStream oneServletOutputStream=response.getOutputStream() ;ObjectOutputStream oneObjectOutputStream =new ObjectOutputStream(oneServletOutputStream) ;oneObjectOutputStream.writeObject(allUserInfos) ;
}public List<UserInfoVO> parseXMLDocumentTags(Document xmlDocument) {List<UserInfoVO> allUserInfos=new ArrayList<UserInfoVO>() ;
Element rootElement = xmlDocument.getRootElement() ; //得到根元素java.util.List<Element> allUserInfoElements = rootElement.getChildren() ;//得到根元素所有子元素的集合
Iterator<Element> allElementItems=allUserInfoElements. iterator() ;while(allElementItems.hasNext() ) {
Element oneUserInfoElement=(Element)allElementItems.next() ;//<userInfo>
String userName=oneUserInfoElement.getChildText("userName") ;
String userPassWord=oneUserInfoElement.getChildText("userPassWord") ;
StringtypeUserAdmin=oneUserInfoElement.getChildText("typeUserAdmin") ;
UserInfoVO oneUserInfoVO=new UserInfoVO() ;oneUserInfoVO. setUserName(userName) ;oneUserInfoVO. setUserPassWord(userPassWord) ;oneUserInfoVO. setType_User_Admin(Integer.parseInt(typeUserAdmin) ) ;allUserInfos.add(oneUserInfoVO) ;
}return allUserInfos;
}public void init() throws ServletException {
杨教授工作室版权所有盗版必究 8/9页
杨教授工作室精心创作的优秀程序员职业提升必读系列资料
}
}
5、在服务器端项目中添加j do m.j ar系统库
由于在Web服务器端项目中需要应用JD o m系统库解析从客户端发送的XM L文件中的相关标签 因此需要添加JDo m系统库文件如下图所示
6、执行本示例并获得相关的结果
inlicloud怎么样?inlicloud(引力主机)主要产品为国内NAT系列VPS,目前主要有:上海联通NAT(200Mbps带宽)、宿州联通NAT(200Mbps带宽)、广州移动NAT(200Mbps带宽)。根据官方的说法国内的NAT系列VPS不要求备案、不要求实名、对中转要求也不严格,但是,禁止任何形式的回国!安徽nat/上海联通/广州移动/江门移动nat云主机,2核1G/200Mbps仅...
Hostodo在九月份又发布了两款特别套餐,开设在美国拉斯维加斯、迈阿密和斯波坎机房,基于KVM架构,采用NVMe SSD高性能磁盘,最低1.5GB内存8TB月流量套餐年付34.99美元起。Hostodo是一家成立于2014年的国外VPS主机商,主打低价VPS套餐且年付为主,基于OpenVZ和KVM架构,美国三个地区机房,支持支付宝或者PayPal、加密货币等付款。下面列出这两款主机配置信息。CP...
老鹰主机HawkHost是个人比较喜欢的海外主机商,如果没有记错的话,大约2012年左右的时候算是比较早提供支付宝付款的主机商。当然这个主机商成立时间更早一些的,由于早期提供支付宝付款后,所以受众用户比较青睐,要知道我们早期购买海外主机是比较麻烦的,信用卡和PAYPAL还没有普及,大家可能只有银联和支付宝,很多人选择海外主机还需要代购。虽然如今很多人建站少了,而且大部分人都用云服务器。但是老鹰主机...