I think your team should learn more about Software Engineering best practices.
You don't need to keep them "separated", you just need to encapsulate and abstract, in your server software, how it communicates with client. When you actually need to change client, you'll just need to refactor that component on server, without needing to touch anything else.
I myself like to develop Application Layer without thinking about UI, and with no way at all for it to be executed directly. It's like a lib that must be included in a executable. Then, I consume it: if it's a server-client, I create a server app that receives client/UI requests, sends it to Application Layer, gets its response and send back to client. If it's a standalone app, UI includes Application Layer and uses it.
In your case, if your UI is HTML based,
you should consider using a layout that works both on desktop and haldhelds. If you use standard and valid HTML and CSS and Unobstructive JavaScript, it should work.
If you really need different clients to access your server in different ways, consider using something easier to work then raw JSON, like
SOAP or XML-RPC.
With
Java EE you can have, in a single .war, a Web UI based on
Servlet and
JSP, and a WebService (SOAP) based on Axis2. This way, when the default Web UI can't be used, you develop another UI that communicates with your Application Layer using WebService (SOAP). Both Servlet and WebServer will consume your Application Layer services.
If you really wanna use a form to send JSON requests, you can use JavaScript to capture its submit event and return false so that it won't be submitted. Instead, your AJAX JS code gathers all fields values, put them into an object, converts it into a JSON
string, sends it as POST, receives server's response and handles it.
As you can see there are a lot of options to solve your need, you can choose what's best for you.