用servlet例子清楚了解servlet和cookies 并且用mvc模式去处理
这个的话就是响应出页面出来 这个就是web层
public class PageServlet extends HttpServlet {
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
String str=(String) req.getAttribute("str")==null?"":(String) req.getAttribute("str");
resp.getWriter().write("<html>");
resp.getWriter().write("<head>");
resp.getWriter().write("</head>");
resp.getWriter().write("<body>");
resp.getWriter().write("<font color='red' size='20px'>"+str+"</font>");
resp.getWriter().write("<form action='login' method='get'>");
resp.getWriter().write("用户名:<input type='text' name='uname' value=''/><br/>");
resp.getWriter().write("密码:<input type='password' name='pwd' value=''/><br/>");
resp.getWriter().write("<input type='submit' value='登录'/><br/>");
resp.getWriter().write("</form>");
resp.getWriter().write("</body>");
resp.getWriter().write("</html>");
}
}
servlet中用service方式处理请求 具体实现了逻辑层的内容
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
String uname=req.getParameter("uname");
String pwd=req.getParameter("pwd");
System.out.println(uname+":"+pwd);
LoginService ls=new LoginServiceImpl();
User u=ls.checkLoginService(uname, pwd);
System.out.println(u);
if(u!=null){
resp.getwrite.write("登录成功");
}else{
req.setAttribute("str", "用户名或密码错误");
}
我们进行添加的是用户,进行封装用户uid uname pwd可以进行映射到数据库并且封装的数据更加安全,把数据存到里面
public class User {
private int uid;
private String uname;
private String pwd;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String toString() {
return "User [uid=" + uid + ", uname=" + uname + ", pwd=" + pwd + "]";
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((pwd == null) ? 0 : pwd.hashCode());
result = prime * result + uid;
result = prime * result + ((uname == null) ? 0 : uname.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
User other = (User) obj;
if (pwd == null) {
if (other.pwd != null)
return false;
} else if (!pwd.equals(other.pwd))
return false;
if (uid != other.uid)
return false;
if (uname == null) {
if (other.uname != null)
return false;
} else if (!uname.equals(other.uname))
return false;
return true;
}
public User() {
super();
}
public User(int uid, String uname, String pwd) {
super();
this.uid = uid;
this.uname = uname;
this.pwd = pwd;
}
}
mvc当然有Dao层,分别设置一个接口一个实现接口的类
public interface LoginDao {
User checkLoginDao(String uname,String pwd);
User checkUidDao(String uid);
}
public class LoginDaoImpl implements LoginDao{
@Override
public User checkLoginDao(String uname, String pwd) {
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
User u=null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test1","root","root");
String sql="select * from t_user where uname=? and pwd=?";
ps=conn.prepareStatement(sql);
ps.setString(1, uname);
ps.setString(2, pwd);
rs=ps.executeQuery();
while(rs.next()){
u=new User();
u.setUid(rs.getInt("uid"));
u.setUname(rs.getString("uname"));
u.setPwd(rs.getString("pwd"));
}
} catch (Exception e) {
e.printStackTrace();
}finally{
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return u;
}
逻辑层专门处理业务逻辑
public interface LoginService {
User checkLoginService(String uname,String pwd);
User checkUidService(String uid);
}
利用cookie进行判断
public class CookieServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
resp.setContentType("text/html;charset=utf-8");
Cookie[] cks=req.getCookies();
if(cks!=null){
String uid="";
for(Cookie c:cks){
if("uid".equals(c.getName())){
uid=c.getValue();
}
}
if("".equals(uid)){
req.getRequestDispatcher("page").forward(req, resp);
return;
}else{
LoginService ls=new LoginServiceImpl();
User u=ls.checkUidService(uid);
if(u!=null){
resp.sendRedirect("/login/main");
return;
}else{
req.getRequestDispatcher("page").forward(req, resp);
return;
}
}
}else{
req.getRequestDispatcher("page").forward(req, resp);
return;
}
}
}