如何将java与html和javascript混合?
我有一个小java项目,其中我必须使用jsp文件。如何将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
我有一个带有登录按钮的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 }