有关用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"); --------------------编程问答--------------------
写文件的效率肯定没有直接读内存来得快啊。不是说了存在static变量里么?楼主直接忽视4楼了? --------------------编程问答-------------------- 存在static变量里?
不懂啊
我存在session里都不行
因为不是在一共回话中 cookie更不行了
现在想存在XML中,不停的改写该文件。 --------------------编程问答--------------------
不行的
这个URL是C客户端发的。
我是要访问viewshow.jsp的
我单独访问的时候,肯定是空值。因为servlet无法通过一种方式来把值传递过来 --------------------编程问答-------------------- session肯定不行啦。不是同一个会话肯定取不到值的。
楼主,你先了解一下java里面的static(静态)变量。全局的。 --------------------编程问答-------------------- static 变量能保存在服务端的内存中吗?
保存的时间有多长?
我原先的想法是想servlet里是不是可以直接把一个请求中的参数值
直接转发给另一个JSP页面,在同一个servlet中。
看来好像不行。
我这边还是尝试用读写文件的方式来做
不过不知道性能怎么样 --------------------编程问答-------------------- 只要你服务器一直运行在,那么static的变量就不会消失。
你那个想法必须要是一个会话才行。
补充:Java , Web 开发