您的位置:首页 > 编程语言 > Java开发

java servlet 一个小案例--登陆跳转

2014-04-21 01:13 281 查看
该小案例是实现从一个页面中的表单输入信息,验证后跳转到其它页面的一个功能。

Login.java文件

//登陆界面

package com.myweb;

import javax.servlet.http.*;

import java.io.*;

public class Login extends HttpServlet{

//处理get请求

//req:用于获得客户端的信息

//res:用于向客户端返回信息

public void doGet(HttpServletRequest req,HttpServletResponse res){

//业务逻辑

try{

//中文乱码 的解决方法

res.setContentType("text/html char set=GBK"); //未能解决问题。找原因

PrintWriter pw = res.getWriter();

//返回登陆界面

pw.println("<html>");

pw.println("<body>");

pw.println("<h1>USERLOGIN,Hello!</h1>");

pw.println("<form action=LoginCl method=post>");

pw.println("UserName:<input type=text name=username /><br/>");

pw.println("Passwd:<input type=password name=passwd /><br/>");

pw.println("<input type=submit value=loing><br/>");

pw.println("</form>");

pw.println("</body>");

pw.println("</html>");

}catch(Exception ex){

ex.printStackTrace();

}

}

//处理pos请求

//req:用于获得客户端的信息

//res:用于向客户端返回信息

public void doPost(HttpServletRequest req,HttpServletResponse res){

this.doGet(req, res);

}

}

LoginCl.java文件

//用户验证servlet

//登陆控制界面

package com.myweb;

import javax.servlet.http.*;

import java.io.*;

public class LoginCl extends HttpServlet{

//处理get请求

//req:用于获得客户端的信息

//res:用于向客户端返回信息

public void doGet(HttpServletRequest req,HttpServletResponse res){

//业务逻辑

try{

//接收用户名和密码

String u=req.getParameter("username");

String p=req.getParameter("passwd");

//验证

if(u.equals("asd")&&p.equals("123")){

//合法

//跳转到welcome

res.sendRedirect("Welcome");

}else{

//非法

//跳转

res.sendRedirect("Login");//写要到的servlet的那个URL

}

}catch(Exception ex){

ex.printStackTrace();

}

//this.doPost(req, res);

}

//处理pos请求

//req:用于获得客户端的信息

//res:用于向客户端返回信息

public void doPost(HttpServletRequest req,HttpServletResponse res){

this.doGet(req, res);

}

}

//Welcome.java文件

//登录成功界面

package com.myweb;

import javax.servlet.http.*;

import java.io.*;

public class Welcome extends HttpServlet{

//处理get请求

//req:用于获得客户端的信息

//res:用于向客户端返回信息

public void doGet(HttpServletRequest req,HttpServletResponse res){

//业务逻辑

try{

PrintWriter pw=res.getWriter();

pw.println("Welcom!Hello");

}catch(Exception ex){

ex.printStackTrace();

}

}

//处理pos请求

//req:用于获得客户端的信息

//res:用于向客户端返回信息

public void doPost(HttpServletRequest req,HttpServletResponse res){

this.doGet(req, res);

}

}

做该小案例时所遇到的问题:

1-问题:输入正确的USERNAME和PASSEORD不能够实现跳转

解决:我在三个.java文件中的doPost方法写成dopos方法,未能覆盖父类的doPost方法,不能实现跳转

2-问题:输入的正确的USERNAME和PASSEORD,成功地实现了跳转,但是跳到LoginCl URL页面处就停了下来没能够跳转到Welcome页面

解决:通过多次的测试,终于找出的再LoginCl处停下来的原因,原来传到LoginCl 处的username和passwd一直为空(这里的空不是说Login没有输入USERNAME和PASSEORD,而是一直没把Login页面的USERNAME和PASSEORD传入到LoginCl页面。导致不能够进入if(){}else{}判断语句中),原来错误在html标记语言中。在input的那两标签处,没有写/结束标签或有/但与前一单词没隔开一个空格导致

3-问题:中文乱码

在Login.java加入以下代码:

//中文乱码 的解决方法

res.setContentType("text/html; charset=gbk");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐