Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将java与html和javascript混合?_Java_Jsp_Servlets_Httprequest_Scriptlet - Fatal编程技术网

如何将java与html和javascript混合?

如何将java与html和javascript混合?,java,jsp,servlets,httprequest,scriptlet,Java,Jsp,Servlets,Httprequest,Scriptlet,我有一个小java项目,其中我必须使用jsp文件。 我有一个带有登录按钮的html,可以触发以下功能: var loginCall = "user/login"; var logoutCall = "user/logout"; var signupCall = "user/signup"; function login() { var login = baseUrl + loginCall + "?"; var loginFormElements = document.forms.login

我有一个小java项目,其中我必须使用jsp文件。
我有一个带有登录按钮的html,可以触发以下功能:

var loginCall = "user/login";
var logoutCall = "user/logout";
var signupCall = "user/signup";

function login() {
var login = baseUrl + loginCall + "?";

var loginFormElements = document.forms.loginForm.elements;

login = addParam(login, USER_NAME, loginFormElements.userName.value, false);
login = addParam(login, PASSWORD, loginFormElements.password.value, true);

simpleHttpRequest(login, function(responseText){

    var status = evalJSON(responseText);

    if (status.errorCode == 200) {
        var res = status.results;
        var sessionId = res[0].sessionId;
        setCookie(SESSION_ID,sessionId);
        window.location="http://localhost:8080/"+baseUrl+"/main.html";
    } else {
        showError(status.errorCode, "Username or password was incorrect.")
    }

}, function(status, statusText){console.log('z');    
    showError(status, statusText);
});
}
据我所知,生成了一个httpRequest,并将其与数据一起发送到baseUrl+loginCall,意思是localhost/something/user/login?name=somename&pass=somepass

这就是我被卡住的地方,我是否必须以某种方式在某个地方创建一个java文件,该文件接收请求信息,与数据库一起处理并返回答案?
如果是,在哪里,如何?我必须将其命名为login/user.java吗


如果不给我一些代码示例或解释我下一步要做什么,有人能给我指出正确的方向吗?

您需要再看看JSP MVC jsp页面应该包含html、javascript和java代码。如果要调用单独的.java类,需要将该类编写为servlet,然后调用它

因此,在您的.jsp中,您有html和javascript,就像在那里一样,然后是这些括号中包含的任何java

看看这里的教程

我看到你在做一个登录页面。我用这篇精彩的教程创建了一个登录系统,帮助我理解jsp和servlet是如何工作的。

还可以查看这张图片,它将帮助您理解这个概念。记住servlet是纯java类,主要用于java,但也可以输出html,jsp主要用于html(&javascript),但可以包括jsp。因此servlet完成工作,然后jsp获得计算值,以便JavaScript可以使用这些值。我就是这么想的反正可能是错的 http://met.guc.edu.eg/OnlineTutorials/static/article_media/jsp%20-%20servlets/login示例%20[4]。jpg


最好的

如果您没有使用任何MVC框架,那么最好的方法就是扩展
HttpServlet
类来处理请求和执行所有繁重的任务,例如业务逻辑处理,访问/更新数据库等,然后将请求发送到
.jsp
文件进行演示。在
.jsp
中,您还可以将自定义对象添加到您希望在“.jsp”页面上访问的请求范围中。使用表达式语言,您可以访问大多数与请求相关的隐式对象

我简单地举了一个典型的流的例子。你可能会有一个想法,并深入地探索自己

下面是一个Javaservlet类,它将处理一个发布的表单

public class doLogin extends HttpServlet{

    @Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException {

    String username= request.getParameter("username"); // get username/pasword from form
    String password = request.getParameter("password");

       // This is your imaginary method for checking user authentication from database
    if(checkUserAuthentication(username,password)){
     /* 
      user is authenticated.Now fetch data for user to be shown on homepage
      User is another class that holds user info. Initialize it with data received from database
     */
      user userData = new User;
      user.setName(...);
      user.setAge(...);
      user.setInfo(...); 
      // etc
    }
    RequestDispatcher view = req.getRequestDispatcher("login.jsp");             

    req.setAttribute("userdata", userData); // set user object in current request scope

    view.forward(req, resp);//forward to login.jsp          

}

protected void doGet(HttpServletRequest req, HttpServletResponse resp)
        throws ServletException {       


}
但是您需要一个带有一些操作的表单来调用上面的
ServletClass

<form action="/checkLogin" method="POST">
  <input type="text" name="username" value="">
  <input type="password" name="password" value="">
  <input type="submit" name="login" value="Login">
</form>
但是它还没有映射到任何url,在
web.xml

<servlet-mapping>
    <servlet-name>LoginServlet</servlet-name>
    <url-pattern>/checkLogin</url-pattern>
</servlet-mapping>
您可以使用sciplet
语法中的java代码访问
用户数据
对象

更好和整洁的方法是使用表达语言

${ pageContext.request.userData.name } 
上面的表达式使用java bean对用户类的对象调用getName()方法

,您可以了解有关表达式语言的更多信息
也许过一段时间,我可以对此进行改进,并为您提供更多的见解。希望这有帮助:)

这应该在任何JSP教程中都有介绍,不是吗?我找不到任何可以说明这一点的内容。我错过了什么?我还没有找到一个与javascript请求交互的jsp教程。jsp文件内置了一个
request
成员。使用此请求获取查询参数。可能重复,非常感谢!而且那个教程似乎正是我想要的。
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
${ pageContext.request.userData.name }