在地址栏直接输入http://localhost:8080/myWebSite/wel

会发现页面也能跳转,只不过用户名和密码都为空,这是不可以的,因为没有经过验证非法登录了

Welcome,hello,nullpassword=null

而使用session防止用户非法登录

Login.java
//登录界面
package com.tsinghua; import javax.servlet.http.*;
import java.io.*; public class Login extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res)
{ //业务逻辑
try{
//中文乱码
//浏览器默认ISO-8859
res.setContentType("text/html;charset=gbk"); PrintWriter pw = res.getWriter(); //返回登录界面
pw.println("<html>");
pw.println("<body>");
pw.println("<h1>登录界面</h1>");
pw.println("<form action='loginCl' method=post>");
pw.println("用户名<input type='text' name='username'/><br/>");
pw.println("密码<input type='password' name='userpwd'/><br/>");
pw.println("<input type='submit' value='loing' /><br/>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>"); }
catch(Exception ex)
{
ex.printStackTrace();
} } //处理get请求
//req用于获得客户端(浏览器)的信息
//res用于向 客户端(浏览器)返回信息
public void doPost(HttpServletRequest req, HttpServletResponse res)
{ this.doGet(req,res); } }

LoginCl.java

//登录界面
package com.tsinghua; import javax.servlet.http.*;
import java.io.*; public class LoginCl extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res)
{ //业务逻辑
try{ //接收用户名和密码
String u = req.getParameter("username");
String p = req.getParameter("userpwd");
//验证 if(u.equals("litao") && p.equals("litao")){
//合法
//将验证成功的信息写入session
//得到session,得到session那张表
HttpSession hs = req.getSession(true);
//默认30分钟,为了展示效果下面修改销毁时间
//该方法是按照秒来算的
hs.setMaxInactiveInterval(20); //写入属性
hs.setAttribute("pass","ok"); //跳转到welcome
res.sendRedirect("wel?uname="+u+"&upass="+p);
}
else{
//不合法
//写你要到的Servlet的那个URL
res.sendRedirect("login");
} }
catch(Exception ex)
{
ex.printStackTrace();
} } //处理get请求
//req用于获得客户端(浏览器)的信息
//res用于向 客户端(浏览器)返回信息
public void doPost(HttpServletRequest req, HttpServletResponse res)
{ this.doGet(req,res); } }

Welcome.java

//登录界面
package com.tsinghua; import javax.servlet.http.*;
import java.io.*; public class Welcome extends HttpServlet{
public void doGet(HttpServletRequest req, HttpServletResponse res)
{
//得到session,得到session那张表
HttpSession hs = req.getSession(true);
String val = (String)hs.getAttribute("pass"); //判断
if(val == null)
{
try
{
//非法登录
res.sendRedirect("login"); }catch(Exception ex)
{
ex.printStackTrace();
} } //得到从logincl传递的用户名和密码
//如果参数的名字写错了,则得到的是null空值
String u = req.getParameter("uname");
String p = req.getParameter("upass"); //业务逻辑
try{ PrintWriter pw = res.getWriter(); //返回登录界面
pw.println("Welcome,hello,"+u+" password="+p); }
catch(Exception ex)
{
ex.printStackTrace();
} } //处理get请求
//req用于获得客户端(浏览器)的信息
//res用于向 客户端(浏览器)返回信息
public void doPost(HttpServletRequest req, HttpServletResponse res)
{ this.doGet(req,res); } }
04-27 02:09