将web浏览器客户端输入传递给服务器Java源代码
Passing web browser client input to server Java source code
我正在用Java开发一个web应用程序,该应用程序获取包含网站URL的字符串,解析网站HTML以收集信息,然后使用该信息查询postgresql数据库。这已经使用Java、HTML、JS和CSS编写了。
在我的HTML中,我有一个文本输入框,用户可以在其中粘贴URL并使用按钮提交。我想做的是,将这个URL作为我上面在Java代码中提到的字符串,而不是自己硬编码。最终,在解析了URL HTML文件并在数据库中运行了我需要的任何查询之后,我将把查询结果返回到浏览器,供用户查看。
我知道JavaScript在浏览器中运行,而我的Java源代码在不同的时间都在服务器端。我收集到一个可能的解决方案是在我的Java源代码中提交一个HTTPServlet请求,该请求与我的JavaScript通信;然而,我不确定实现这一目标的正确步骤。XmlHTTPRequest是我看到的其他正在使用的东西。
编辑-在进一步阅读之后,我将决定是编写Javaservlet还是编写JSP来处理此问题。我倾向于servlet,因为我对Java比HTML更熟悉,并且将使用更多的逻辑(HTML解析、使用jdbc的RDBMS查询、返回数据)。
这似乎是正确的决定吗?
我希望我措辞清楚,这是一个合理的问题!非常感谢。
更新/编辑
以下是我在思考了Mois44的答案后编写的代码。我不确定在我的xmlHttp.send()请求中为URL放什么。在浏览器中,有一个文本框,正如我所说,还有用户的提交按钮。
错误:url.html:91 POSThttp://localhost:8080/myapplication/GetURL?url=http://mywebsite.com/category/123986/webpage/404(未找到)
这是这些文件的项目结构:
src/main/
|
|----java/
| |
| |----path/to/java/servlet/myServlet.java
|
|----webapp/
|
|----META-INF/
| |----web.xml
|
|----pages/
|----url.html
|
index.html
web.xml:
<servlet>
<servlet-name>GetURL</servlet-name>
<servlet-class>path.to.java.servlet.myServlet</servlet-class>
<init-param>
<param-name>url</param-name>
<param-value>www.testurl.com</param-value> // don't I set this in my url.html from user?
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>myServlet</servlet-name>
<url-pattern>/myServlet/*</url-pattern> // not sure about this...
</servlet-mapping>
url.html:
<div class="url-input">
<input type="text" id="txtUrl" class="text-box" value="Paste recipe website URL here" align="middle">
<button onclick="urlRequest()" id="myid" value="myvalue">Go!</button>
<script>
function getURL(xmlHttp) {
document.getElementById("myid").value = xmlHttp.responseText;
return document.getElementById("txtUrl").value
}
</script>
<script>
function urlRequest() {
var xmlHttp = new XMLHttpRequest();
var url = getURL(xmlHttp);
xmlHttp.open('POST', 'http://localhost:8080/myapplication/GetURL?url='+url, true);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState = 4 && xmlHttp.status == 200) {
alert(xmlHttp.responseText);
}
};
xmlHttp.send(url);
}
</script>
</div>
myServlet.java:
public class Servlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
handleRequest(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
handleRequest(request, response);
}
protected void handleRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String p = request.getParameter("url");
System.out.println("test");
System.out.println(p);
}
}
如果您想使用您已经知道的工具,请使用JSF。
您也可以在Java服务器中创建一个简单的HTTP端点,并使用JavaScript与之通信。JSON是一个不错的选择,因为JavaScript非常支持它。对于Java中的JSON,我推荐Jackson项目)
编辑:JavaScript部分示例:
// get user input from input field..
var userInput = document.getElementById("#my-input").value;
xmlHttp = new XMLHttpRequest();
// HTTP Method, URL, async
xmlHttp.open('POST', '/myJavaEndPoint', true);
// create onreadystatechange callback function,
// it gets called everytime the readyState changes..
xmlHttp.onreadystatechange = function () {
// readyState 4 means "DONE" - request is complete, responseText now contains the full response..
if (xmlHttp.readyState == 4) {
alert(xmlHttp.responseText); // Show the result to the user.
}
};
xmlHttp.send(userInput); // Start Request, send the user input as post-payload
- 如何轻松地将服务器端变量从Java代码转移到客户端代码
- 引用nodejs服务器中html中的java脚本文件
- 在javascript客户端和java服务器之间共享Google Analytics ClientID
- 如何将我的Ionic应用程序与我的java服务器(Spring MVC)连接
- 将web浏览器客户端输入传递给服务器Java源代码
- 使用 java 服务器捕获 ajax 请求
- 在使用java使用dropbox选择器从dropbox中提取文件后,如何将文件存储在服务器中
- Java服务器端验证
- Firebase服务器发送事件-如何构建Java/JavaScript客户端
- 通过Node中间人将表单数据发送到Java服务器
- 如何从Javascript调用Java方法(非服务器)
- Javascript 客户端无法连接到 Java 服务器
- 从 Java 服务器加载 JSON ajax 后无法获取 h1 标记的内部 HTML
- 如何在 Struts 2 中将音频 blob(数据)文件从 JavaScript 发送到 Java 服务器操作
- Web浏览器上Java,ReactJS代码的服务器端渲染
- 将数据从 Java 客户端发送到 NodeJS 服务器
- Java客户端卡在来自nodejs服务器的数据数据流中
- 如何通过ajax将变量发送到服务器(Java),然后加载带有响应的DataTable
- 如何发送数据服务器(JAVA编写)到客户端(Node.js编写)
- 服务器(Java-Cipher)和客户端(Javascript-CryptoJS)之间的AES