1
我使用Apache Tomcat和一个servlet从MySQL数据库查询用户名和密码正确使用登录servlet的重定向到URL
HTML网页代码:
<form action="./login" method="POST">
User name: <input type="text" name="username" size="20"><br>
Password: <input type="password" name="pwd" size="20">
<br><br>
<input type="submit" value="Submit">
</form>
servlet代码:
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.sql.*;
import java.io.*;
public class VerifyLogin extends HttpServlet
{
public void doGet(HttpServletRequest req,HttpServletResponse res)throws IOException,ServletException
{
String n1 = req.getParameter("username");
String n2 = req.getParameter("pwd");
res.setContentType("text/html");
PrintWriter out = res.getWriter();
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","paSSword");
PreparedStatement ps = con.prepareStatement("select * from auth WHERE username=? && password=?");
ps.setString(1,n1);
ps.setString(2,n2);
ResultSet rs = ps.executeQuery();
if(rs.next())
{
res.sendRedirect("report.html");
}
else
{
res.sendRedirect("Invalid.html");
}
}
catch (Exception e)
{
System.out.println(e);
}
}
}
web.xml代码:
<web-app>
<servlet>
<servlet-name>Login</servlet-name>
<servlet-class>VerifyLogin</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
我的目录结构是
=============>tomcat
+webapps
+myapp
+
+report.html
+report2.html
+xxxx.html
+WEB-INF
+classes
+lib
+web.xml
我是能够成功地验证和用户重定向到所需的页面(report.hmtl),问题是当用户复制登录后的地址说http://192.168.2.2:8080/myapp/Reports.html,并在另一个浏览器粘贴地址他不会被要求登录。
report.html有更多的链接,如果有人知道链接,可以在不登录的情况下访问它。所有的.html页面都放在WEB-INF文件夹之外如何保护那些来自直接访问的示例(例如report2.html,xxx.html)?而无需将html页面转换为jsp
thnaks for reply,can not it be done without without html to jsp ?? PS:忘记提及它的问题 – 2012-04-03 14:40:43
不,不能在HTML中检查会话,并且在转换为jsp时没有问题... – 2012-04-03 14:45:43
我的问题是,我在WEB-INF文件夹外有56个HTML页面,有没有什么办法我可以自动将它们转换成批次吗? – 2012-04-03 15:00:28