package cn.kun.admin;
import java.io.*;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import cn.kun.db.DbConnectionManager;public class adminLogin extends HttpServlet{
protected void doPost(HttpServletRequest req, HttpServletResponse res)throws IOException, ServletException{
doGet(req,res);
}
protected void doGet(HttpServletRequest req, HttpServletResponse res)throws IOException,ServletException{
res.setContentType("text/html;charset=gb2312");//包含响应中文情况
PrintWriter out = res.getWriter();//获得一个流
String admin = new String(req.getParameter("admin").getBytes("ISO-8859-1"));
String passwd = req.getParameter("passwd");
String checkCode = req.getParameter("checkCode"); String sqlStr;
ResultSet rs,rsS;
HttpSession  session = req.getSession(); sqlStr = "select * from my_admin where uid='"+admin+"'and passwd='"+passwd+"'";
if(checkCode.equals(session.getAttribute("rand"))){
DbConnectionManager dbm = new DbConnectionManager();
try{
rs=dbm.executeQuery(sqlStr);
if( rs.next()){
session.setAttribute("admin",admin);
res.sendRedirect("updatePage.jsp");
}
else{
session.setAttribute("errMsg","对不起,你的用户名或者密码有错,请查证再登录");
res.sendRedirect("error.jsp");
} }
catch(Exception e){
e.printStackTrace();
}
}
else{
session.setAttribute("errMsg","对不起,你的验证码有错,请查证再登录");
res.sendRedirect("error.jsp");
}
}
}

解决方案 »

  1.   

    这个页面转起来好简单的吧,写个action继承ActionSupport的类,再弄个数据库连接类被前面aciton调用,再写个user的model,整整页面就搞定了
      

  2.   

    大哥,我只想简单的改改先,毕竟也是刚学,太深的我也不会,只是想知道在servlet里的HttpServletRequest,HttpServletResponse,还有HttpSession在struts2可不可以只是改一下类名就实现的,貌似前两个
    HttpServletRequest request = ServletActionContext.getRequest ();
    HttpServletResponse response = ServletActionContext.getResponse();可以这么改,但是最后一个网上是Map session=(Map)ActionContext.getContext().get(ActionContext.SESSION);这么改,可是编译总出问题,能不能在此基础上来改的?
      

  3.   

    那你把extends HttpServlet改成extends ActionSupport,下面再用map就不该有问题, 什么HttpServletRequest,HttpServletResponse可以去掉了
      

  4.   

    貌似struts2的方法public String execute() throws Exception 是没有参数的,不过你的意思是中不是在public String execute() throws Exception 这个方法里调用之前那个servlet里的方法来的?
      

  5.   

    execute()本来就没有参数,兄弟 你还是要看看struts2的helloworld去
      

  6.   

    这个我不是早说了吗?以前用servlet做好的,只是现在想着怎么加上个struts2,这是继实例后的第一个例子,所以怎么实现还不是很懂?很想请你讲得明白一点,你说得我都一头雾水了
      

  7.   


    改改类名是不行的, 其实LZ的servlet要改成struts2也不难, 把你的doGet()方法中内容挪到execute 底下就行了。 struts2中为什么还非要使用request、response, 用map不是很好吗。 public class XAction extends ActionSupport {
       private String admin ; 
       private String password;
       private String checkCode ;    // setter  、 getter   public String execute() {
          if("rand".equals(checkCode)) {            ... 做你的查询操作。 
                return SUCCESS;   // 需要在struts.xml 中配置你的跳转页面  或者你用annotation来写。  
          } else {
                return LOGIN;
          }
       }
    }具体struts2 怎么来写, 建议楼主看看书。 找个小例子跑跑   
      

  8.   

    package cn.kun.admin;
    import com.opensymphony.xwork2.ActionSupport; 
    import org.apache.struts2.*;
    import javax.servlet.http.*;
    import java.util.Map;import java.io.*;
    import java.sql.*;
    import cn.kun.db.DbConnectionManager;public class login extends ActionSupport { 
    public String execute() throws Exception { 
    HttpServletRequest req = ServletActionContext.getRequest ();//主要是为了使用session对象的setAttribute方法
    HttpServletResponse res = ServletActionContext.getResponse ();  //这个是为了实现对页面的跳转

    res.setContentType("text/html;charset=gb2312");//包含响应中文情况 String admin = new String(req.getParameter("admin").getBytes("ISO-8859-1"));
    String passwd = req.getParameter("passwd");
    String checkCode = req.getParameter("checkCode"); String sqlStr;
    ResultSet rs,rsS;
    HttpSession  session = req.getSession();//主要是为了实现对错误停息页面的跳转 sqlStr = "select * from my_admin where uid='"+admin+"'and passwd='"+passwd+"'";
    if(checkCode.equals(session.getAttribute("rand"))){//这个是根据验证码来进行判断
    DbConnectionManager dbm = new DbConnectionManager();//实例化数据库的操作
    try{
    rs=dbm.executeQuery(sqlStr);
    if( rs.next()){
    session.setAttribute("admin",admin);
    res.sendRedirect("updatePage.jsp");
    }
    else{
    session.setAttribute("errMsg","对不起,你的用户名或者密码有错,请查证再登录");
    res.sendRedirect("error.jsp");
    } }
    catch(Exception e){
    e.printStackTrace();
    }
    }
    else{
    session.setAttribute("errMsg","对不起,你的验证码有错,请查证再登录");
    res.sendRedirect("error.jsp");
    }
    return checkCode;//这一句我实在不明白是返回什么了,貌似我也没有什么值要返回
    }
    }
    在struts.xml文件
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
        "http://struts.apache.org/dtds/struts-2.0.dtd"><struts>
    <package name="test1" namespace="/admin" extends="struts-default">
           <action name="login" class="cn.kun.admin.login"> 
    <result>/admin/login.jsp</result>  
    </action>
    </package> 
    </struts>
    想问问那个之前的return语句就是返回给result的吗
      

  9.   


    package cn.kun.admin; 
    import com.opensymphony.xwork2.ActionSupport; 
    import org.apache.struts2.*; 
    import javax.servlet.http.*; 
    import java.util.Map; import java.io.*; 
    import java.sql.*; 
    import cn.kun.db.DbConnectionManager; public class login extends ActionSupport { 
    private String admin ; 
    private String password; 
    private String checkCode ; public String execute() throws Exception { 
    HttpServletRequest req = ServletActionContext.getRequest ();//主要是为了使用session对象的getAttribute方法 
    HttpServletResponse res = ServletActionContext.getResponse ();  //这个是为了实现对页面的跳转 res.setContentType("text/html;charset=gb2312");//包含响应中文情况,在servlet里要用,在这里还要用吗? String sqlStr; 
    ResultSet rs,rsS; 
    HttpSession  session = req.getSession();//主要是为了实现对错误停息页面的跳转 sqlStr = "select * from my_admin where uid='"+admin+"'and passwd='"+passwd+"'"; if(checkCode.equals(session.getAttribute("rand"))){//这个是根据验证码来进行判断 
    DbConnectionManager dbm = new DbConnectionManager();//实例化数据库的操作 
    try{ 
    rs=dbm.executeQuery(sqlStr); 
    if( rs.next()){ 
    session.setAttribute("admin",admin); 
    res.sendRedirect("updatePage.jsp"); 

    else{ 
    session.setAttribute("errMsg","对不起,你的用户名或者密码有错,请查证再登录"); 
    res.sendRedirect("error.jsp"); 
    } } 
    catch(Exception e){ 
    e.printStackTrace(); 


    else{ 
    session.setAttribute("errMsg","对不起,你的验证码有错,请查证再登录"); 
    res.sendRedirect("error.jsp"); 

    return "success";


    在struts.xml文件 
    <?xml version="1.0" encoding="UTF-8" ?> 
    <!DOCTYPE struts PUBLIC 
        "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" 
        "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> 
    <package name="test1" namespace="/admin" extends="struts-default">//我想知道这个package的name属性是不是没有实质性的意思的       <action name="login" class="cn.kun.admin.login"> 
    <result name="success">/login.jsp </result> 
    </action> 
    </package> 
    </struts> 麻烦帮忙一下,我也准备结帐
      

  10.   

    晕死,在代码里竟然不能使用颜色
    那我就再说一遍第一个:
    res.setContentType("text/html;charset=gb2312");//包含响应中文情况,在servlet里要用,在这里还要用吗? 第二个:
    <package name="test1" namespace="/admin" extends="struts-default">//我想知道这个package的name属性是不是没有实质性的意思的       
    麻烦帮忙一下,我也准备结帐 
     
    修改 删除 举报 引用 回复