package org.ylb.mvcdemo.servlet;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import org.ylb.mvcdemo.vo.*;
import org.ylb.mvcdemo.factory.*;
import org.ylb.mvcdemo.dao.imp.*;
import org.ylb.mvcdemo.dao.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
public class loginservlet extends HttpServlet{
public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException,IOException{
String path1 = "Login_Failure.jsp" ;
String path2 = "Login_Success.jsp" ;
String userid = request.getParameter("userid") ;
String userpass = request.getParameter("userpass") ;
HttpSession session = null;
String uname = null ;
List<String> info = new ArrayList<String>() ; // 收集错误
if(userid==null || "".equals(userid)){
info.add("用户id不能为空!") ;
}
if(userpass==null || "".equals(userpass)){
info.add("密码不能为空!") ;
}
if(info.size()==0){ // 里面没有记录任何的错误
User user = new User() ;
user.setUserid(userid) ;
user.setPassword(userpass) ;
try{
if(UserFactory.getUserimpinstance().FindLogin(user)){
session = request.getSession();
session.setAttribute("userid","login");
request.setAttribute("uname",user.getName());
request.setAttribute("info",info) ;
request.getRequestDispatcher(path2).forward(request,response) ;
System.out.println(request.getAttribute("uname"));
info.add("用户登陆成功,欢迎" + user.getName() + "光临!") ;
} else {
request.setAttribute("info",info) ;
request.getRequestDispatcher(path1).forward(request,response) ;
info.add("用户登陆失败,错误的用户名和密码!") ;
}
}catch(Exception e){
e.printStackTrace() ;
}
}
}
public void doPost(HttpServletRequest req,HttpServletResponse resp) throws ServletException,IOException{
this.doGet(req,resp) ;
}
}
我写的servlet现在我想把 当中的的验证都封装到util类中
还有想把String path1 = "Login_Failure.jsp" ;
String path2 = "Login_Success.jsp" ;
String userid = request.getParameter("userid") ;
String userpass = request.getParameter("userpass") ;
HttpSession session = null;
String uname = null ; 这段声明也封装了
求方法 小弟刚接触java3个月 请高手指教。
------解决方案--------------------------------------------------------
封装的方式很多,难以定论。
最简单的是通用判断的封装,比如:
if(userid==null || "".equals(userid)){
info.add("用户id不能为空!") ;
}
可以封装为统一的:
public static boolean notEmpty(String str, List<String> info) {
if(str==null || "".equals(str)){
info.add("用户id不能为空!") ;
return false;
}
return true;
}
那么前端使用时就一句话:
XXOO.notEmpty(userid, info);
另外就是专门封装一个Validation类,专门负责针对性的处理该Servlet的所有参数检查,这个可以借助Struts框架会更方便些。
------解决方案--------------------------------------------------------
这段内容,直接这么封装意义不大,一般建议是用值对象来封装会合适点,但内容又显得太少。。。
我还是举个例子吧:
- Java code
public class UserInfo { private String userid; private String userpass; private List<String> info = new ArrayList<String>() ; // 收集错误 public UserInfo(HttpServletRequest request) { // 利用构造函数初始化整个对象 this.userid = request.getParameter("userid"); this.userpass = request.getParameter("userpass"); XXOO.notEmpty(this.userid, this.info); XXOO.notEmpty(this.userpass, this.userpass); } public List<String> getErrorInfo() { return info; } // 属性的get/set方法略}