我是Java EE的新手,我知道类似以下三行
<%= x+1 %>
<%= request.getParameter("name") %>
<%! counter++; %>
Run Code Online (Sandbox Code Playgroud)
是一种旧式的编码方式,在JSP版本2中,存在一种避免JSP文件中的Java代码的方法.有人可以告诉我替代的JSP 2行,以及这种技术的名称是什么?
我正在创建一个简单的登录页面,我想将登录和密码参数作为UTF-8编码的字符串传递.正如你在下面的代码中看到的那样,第一行是我将编码设置为UTF-8的地方,但它似乎毫无意义,因为它不起作用.当我使用带重音的登录名和密码参数时,结果页面会收到奇怪的字符.
如何以适用于所有浏览器的方式正确设置字符编码?
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>My Page</title>
</head>
<body>
<h1>Welcome to My Page</h1>
<form name="login" action="login.jsp" method="POST">
Login:<br/>
<input type="text" name="login" value="" /><br/>
Password:<br/>
<input type="password" name="password" value="" /><br/>
<br/>
<input type="submit" value="Login" /><br/>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) 我正在将Java 11与带有最新JSP / JSTL的Tomcat 9配合使用。我正在Windows 10的Chrome 71和Firefox 64.0中进行测试。我有以下测试文档:
<%@ page contentType="text/html; charset=UTF-8" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="en-US">
<head>
<meta charset="UTF-8"/>
<title>Hello</title>
</head>
<body>
<c:if test="${not empty param.fullName}">
<p>Hello, ${param.fullName}.</p>
</c:if>
<form>
<div>
<label>Full name: <input name="fullName" /></label>
</div>
<button>Say Hello</button>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
这也许是最简单的形式。如您所知,表单method默认为get,表单action默认为""(提交到同一页面),表单enctype默认为application/x-www-form-urlencoded。
如果我在字段中输入名称“FlávioJosé”(巴西著名的法罗歌手和音乐家)并提交,则通过将该表单通过HTTP提交GET到同一页面hello.jsp?fullName=Fl%C3%A1vio+Jos%C3%A9。这是正确的,并且页面上显示:
Hello, Flávio José.
Run Code Online (Sandbox Code Playgroud)
如果将表单更改method为post并输入相同的名称“FlávioJosé”,则表单内容将通过提交POST,并带有HTTP请求内容:
fullName=Fl%C3%A1vio+Jos%C3%A9
Run Code Online (Sandbox Code Playgroud)
这似乎也是正确的。但是这次页面显示:
Hello, Flávio …Run Code Online (Sandbox Code Playgroud)