任务要求:
1.预定餐位:只能提前预订两天,且当天晚上七点以后,只能预订明天和后天。
判断手机号码是否是11位,是否已经订餐。
根据就餐人数判断是否有空余桌子。
2.取消餐位:根据手机号码是否有效且订餐,删除信息。
将该系统部署成web服务后,编写客户端调用。要求有简单界面。
环境选择:eclipse+tomcat+axis2(我还引入了两个jar包:mail.jar和activatation.jar 应该是这样拼吧。。。。。)
学习内容整理:
一、什么是基于soap的web服务: 个人感觉就是可以调用很多服务,集成的意思。
具体可以看看 http://www.webxml.com.cn/zh_cn/web_services_item.aspx?id=494536374B66307964534D3D
soap:简单对象访问协议。大概就是是一种协议,给数据穿上xml这个洋气的时装,塞进HTTP这个法拉利,驰骋在tcp或udp的道路上。
web服务:基于web的服务。。。。
wsdl文件是soap的说明书:其中最重要说明了服务的地址。
有命名空间,方法之类的,但在最后有service:
说明了服务地址!就 可以调用了,哈哈哈哈哈!
二、具体操作:
1.配置环境:
下载axis2 :
axis2-eclipse-codegen、axis2-eclipse-service 这两个下载后放在\eclipse\dropins下面,最好直接把jar包放在那!
axis2-bin
添加的mail.jar activation.jar放在Tomcat/lib目录下;
然后重启eclipse new->others 就可以看到axis2了!
二、文件操作流程:
1.服务器端:
新建Dynamic Web Project ,最后要勾上生成.xml文件;
添加一个.java文件,里面写要实现的方法,应该一般都会有返回值。
new-->webservice,找到刚刚写的那个类,start server。
也可以验证一下:lanuch the webservice(在小地球旁边那个把),右上角倒数第二个,点击wsdl,在生成的wsdl文件找到地址,复制+?wsdl,验证服务。
客户端:
看你想要什么就新建什么。控制台输出,那就新建 javaproject,页面的话,新建Dynamic Web Project;
调用服务:new-》web service client 选择刚刚的wsdl文件。
看到src目录下多了很多java文件,有一个proxy结尾的文件,就new这个实例,调用其方法。
比如:ReserveProxy proxy=new ReserveProxy ();
hint= proxy.drop(tel);
具体参考我写的时候看到的一个博客,感谢感谢(https://blog.csdn.net/timothy93bp/article/details/77800807);
三、知识总结:
1.连接数据库:这个版本好像 有要求:可以百度一下jdbc版本(https://www.cnblogs.com/junzi/p/6893122.html)。我用的是5.1
增删查改都类似,这里只记录update了。。。。实懒!
PreparedStatement ps=null;
String driver="com.mysql.cj.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/reserve?useUniicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false";//?useUniicode=true&characterEncoding=utf8&serverTimezone=GMT%2B8&useSSL=false
try {
Class.forName(driver).newInstance(); //创建驱动
java.sql.Connection connection= DriverManager.getConnection(url, "root", null); //建立连接
String sql="update seata set name=?,reservetime=?,people=?where tel=?"; //sql 语句
ps=connection.prepareStatement(sql); //准备一下
ps.setString(1, name);
ps.setString(2, time);
ps.setInt(3, count);
ps.setString(4, tel);
rs= ps.execute(); //发射 这个还有executequery()"update"的时候用。
System.out.println("查询结果"+rs);
}catch(Exception e) {
e.printStackTrace();
}finally {
try {
ps.close(); //关闭发动机
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2.获取时间,今天,明天。。。(date什么的好像被禁用了,该用什么calencer ,好像又拼错了)
Calendar calendar = Calendar.getInstance();
Date d = calendar.getTime();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String now = df.format(d);
int day=Integer.valueOf(now.substring(8, 10)).intValue()+1;
cal.set(Integer.valueOf(now.substring(0, 4)).intValue(), Integer.valueOf(now.substring(5, 7)).intValue()-1,day); //明天的设法,我也不知道为什么,可能月份是从0开始的吧。
Date dd=null;
SimpleDateFormat ddf = new SimpleDateFormat("yyyy-MM-dd");
dd=cal.getTime();
String tomorrow = ddf.format(dd);
3.jsp 获得文本框的内容:
把那个table用form包起来像这样<form method="post" action="dining-hall.jsp">,action里面的内容是把数据提交到哪里去。
把你要获得的写个name:<input type="text" placeholder="请输入称呼" name="name" />
最后获取:name=request.getParameter("name");
总体就是这么多了吧。。。
------------恢复内容结束------------