当前位置:编程学习 > JAVA >>

有关用servlet+JSP做跟C++通讯接收端的问题

各位大侠

小弟碰到一个问题如下:

有一个用C做的客户端,他会固定通过http方式发送一个请求过来,格式大致如下:

http://localhost/myapp/show?num=12&ste=1&work=2

他的程序每隔5秒发送一次。来给最新的数据。

问题在服务端。我要把这个请求中的数据显示在一个页面上show.jsp  。

服务端我这边的思路:当点击转接到show.jsp这个按钮的时候,发送一个参数 ifon 到servlet。

当servlet接收到这个ifon参数的时候,把其他接收到得参数 num ste work 转发到 show.jsp 上。

如果servlet没有接收到这个ifon 这个参数,就是ifon为空的时候。就对num ste work做丢弃处理。

这个思路对不对。还是说有其他方法来做?比如spring什么的。

求教啊  --------------------编程问答-------------------- 代码部分,在servlet中该如何处理这个url发送过来的请求。

他是异地通过IP来访问我这个地址。我这边能接收到页头数据吗?

要做保存吗?还是怎么搞?

大哥大姐们帮帮忙啊 --------------------编程问答-------------------- 不管它怎么访问,反正它的request里面带有参数。那你在servlet用
request.getParameter("num");
request.getParameter("ste");
request.getParameter("work");

来接收它的参数,并存在一个位置。

当你在别一个客户端的页面上点击“查看”按钮时,在另一个servlet里把那些值取出来显示给show.jsp --------------------编程问答-------------------- 关键是怎么保存?

我servlet里是这样写的:
 String num = req.getParameter("num");
 String updown=req.getParameter("updown");
 String work = req.getParameter("work");
 req.setAttribute(num, num);
 req.setAttribute(updown, updown);
 req.setAttribute(work, work);
 System.out.println(num);
 System.out.println(updown);
 System.out.println(work);
RequestDispatcher  requestDispatcher=req.getRequestDispatcher("viewshow.jsp");  
requestDispatcher.forward(req,resp);


然后viewshow.jsp里是这样写的:

<body>
  <%
   request.setCharacterEncoding("UTF-8");
   String num = request.getAttribute("num");
   String updown=request.getAttribute("updown");
   String work = request.getAttribute("work");
  %>
  <div>
  <%out.println(num);%>
  <br>
  <%out.println(updown);%>
  <br>
  <%out.println(work);%>
  <br>
  </div>
</body>


如果该JSP页面是个简单的文字页面。是可以跳转的,tomcat里也能打印出参数值。

但是要是JSP里写了接收参数的代码。就会报错。参数传不过来。

--------------------编程问答-------------------- 都不是一个请求,当然不能这样啦。
C做的客户端访问是它的请求,你jsp页面是另一个请求。

你把值保存在static的变量里,显示jsp页面时再去取。 --------------------编程问答-------------------- 现在就是碰到这个问题

我如果访问这个URL
http://localhost/myapp/show?num=12&ste=1&work=2
他是可以跳转到JSP页面的


但是如果我单独访问viewshow.jsp
http://localhost/myapp/viewshow.jsp
是显示都为null
或者单独访问该servlet
http://localhost/myapp/show
也全是NULL

因为没有值传过来。


那该怎么处理,是不是要把改servlet里的数值写入一个文件中

然后访问JSP文件的时候再去读,那这样怎么做到实时呢?

而且这样会不会对整个运行环境造成速度上的影响 --------------------编程问答-------------------- 因为 C 请求servlet 再到 跳转到JSP不是同一个请求,所以传的参数会丢失;

试试:req.getRequestDispatcher("viewshow.jsp?num=12&ste=1&work=2"); --------------------编程问答--------------------
引用 5 楼  的回复:
现在就是碰到这个问题

我如果访问这个URL
http://localhost/myapp/show?num=12&ste=1&work=2
他是可以跳转到JSP页面的


但是如果我单独访问viewshow.jsp
http://localhost/myapp/viewshow.jsp
是显示都为null
或者单独访问该servlet
http://loc……


写文件的效率肯定没有直接读内存来得快啊。不是说了存在static变量里么?楼主直接忽视4楼了? --------------------编程问答-------------------- 存在static变量里?

不懂啊

我存在session里都不行

因为不是在一共回话中    cookie更不行了


现在想存在XML中,不停的改写该文件。 --------------------编程问答--------------------
引用 6 楼  的回复:
因为 C 请求servlet 再到 跳转到JSP不是同一个请求,所以传的参数会丢失;

试试:req.getRequestDispatcher("viewshow.jsp?num=12&ste=1&work=2");


不行的

这个URL是C客户端发的。

我是要访问viewshow.jsp的


我单独访问的时候,肯定是空值。因为servlet无法通过一种方式来把值传递过来 --------------------编程问答-------------------- session肯定不行啦。不是同一个会话肯定取不到值的。

楼主,你先了解一下java里面的static(静态)变量。全局的。 --------------------编程问答-------------------- static 变量能保存在服务端的内存中吗?

保存的时间有多长?

我原先的想法是想servlet里是不是可以直接把一个请求中的参数值
直接转发给另一个JSP页面,在同一个servlet中。
看来好像不行。

我这边还是尝试用读写文件的方式来做

不过不知道性能怎么样 --------------------编程问答-------------------- 只要你服务器一直运行在,那么static的变量就不会消失。

你那个想法必须要是一个会话才行。
补充:Java ,  Web 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,