本篇博文博主就用纯代码展示啦
用MVC登录的例子
1.首先得有两个界面
login.jsp(登录的页面)
<body>
<h1>登录</h1>
<form action="login.do" method="post">
用户名:<input type="text" name="uname"/><br/>
密码:<input type="password" name="upass"/><br/>
<input type="submit" value="登录"/><br/>
</form>
<%-- 浏览器查看: http://localhost:8080/项目名/login.jsp --%>
</body>index.jsp(登录成功的页面)
......
</head>
<body>
登录成功!<br>
</body>
2.写util包的DBHelper类
package com.zking.util;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.sql.DataSource;
public class DBHelper {
public static Connection getConn(){
try {
Context context=new InitialContext();
Context contextJava=(Context)context.lookup("java:comp/env");
DataSource ds=(DataSource)contextJava.lookup("jdbc/UsersDB");
return ds.getConnection();
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void close(Connection conn,PreparedStatement ps,ResultSet rs){
try {
if(conn!=null && !conn.isClosed()){
conn.close();
}
if(ps!=null){
ps.close();
}
if(rs!=null){
rs.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
3.写entity包的实体类
package com.zking.entity;
public class Users {
private int uid;
private String uname;
private String upass;
public Users() {
super();
// TODO Auto-generated constructor stub
}
public Users(String uname, String upass) {
super();
this.uname = uname;
this.upass = upass;
}
public Users(int uid, String uname, String upass) {
super();
this.uid = uid;
this.uname = uname;
this.upass = upass;
}
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 getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
@Override
public String toString() {
return "Users [uid=" + uid + ", uname=" + uname + ", upass=" + upass
+ "]";
}
}
4.写Dao包
package com.zking.dao;
import com.zking.entity.Users;
public interface UsersDao {
public boolean Login(Users u);
}
package com.zking.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import com.zking.entity.Users;
import com.zking.util.DBHelper;
public class UsersDaoImp implements UsersDao {
public boolean Login(Users u) {
boolean b=false;
Connection conn=DBHelper.getConn();
PreparedStatement ps=null;
ResultSet rs=null;
try {
ps=conn.prepareStatement("select * from Users where uname=? and upass=?");
ps.setString(1, u.getUname());
ps.setString(2, u.getUpass());
rs=ps.executeQuery();
return b=rs.next();
} catch (Exception e) {
e.printStackTrace();
}finally{
DBHelper.close(conn, ps, rs);
}
return b;
}
}
5.写Biz包
package com.zking.biz;
import com.zking.entity.Users;
public interface UsersBiz {
public boolean Login(Users u);
}
package com.zking.biz;
import com.zking.dao.UsersDao;
import com.zking.dao.UsersDaoImp;
import com.zking.entity.Users;
public class UsersBizImp implements UsersBiz {
private UsersDao ud;
public UsersBizImp() {
ud = new UsersDaoImp();
}
public boolean Login(Users u) {
return ud.Login(u);
}
}
6.定义个servlet(TotalServlet)控制所有的*.do请求
package com.zking.servlet;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Reader;
import java.util.Properties;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class TotalServlet extends HttpServlet{
@Override
public void init(ServletConfig config) throws ServletException {
try {
Properties pro=new Properties();//加载配置文件config.properties
Properties proObject=new Properties();
String path=config.getServletContext().getRealPath("/");//1获取服务器的路径
FileInputStream fis=new FileInputStream(path+"WEB-INF/config.properties");
pro.load(fis);
config.getServletContext().setAttribute("properties", pro);////将properties存放到application中
config.getServletContext().setAttribute("propertiesObject", proObject);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String uri=req.getRequestURI();//获取请求路径
//截取
int lastXie=uri.lastIndexOf("/");//获取最后一个斜杠的位置
int lastPoint=uri.lastIndexOf(".");//获取最后一个点的位置
uri=uri.substring(lastXie+1, lastPoint);
System.out.println("请求路径:"+uri);
//从application中获取properties
Properties pro=(Properties) req.getSession().getServletContext().getAttribute("properties");
//根据键获取值
String className=pro.getProperty(uri);
System.out.println("获取到相对应的全限定名为:"+className);
Properties proObject=(Properties) req.getSession().getServletContext().getAttribute("propertiesObject");
TotalDo total=(TotalDo) proObject.get(className);
//根据类的全限定名 来 实例化 该对象
try {
if(total==null){//初始化对象
total=(TotalDo)Class.forName(className).newInstance();
proObject.put(className, total);//必须存放
}
total.execute(req,resp);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doPost(req, resp);
}
}
7.新建一个接口(TotalDo),声明方法execute();将所有的实现类继承action接口
package com.zking.servlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* 所有servlet的接口
*/
public interface TotalDo {
public void execute(HttpServletRequest req, HttpServletResponse resp);
}
8.登录的业务逻辑
package com.zking.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.zking.biz.UsersBizImp;
import com.zking.entity.Users;
public class LoginDo implements TotalDo{
public void execute(HttpServletRequest req, HttpServletResponse resp) {
resp.setContentType("text/html; charset=UTF-8");
String uname=req.getParameter("uname");
String upass=req.getParameter("upass");
UsersBizImp ubi=new UsersBizImp();
boolean b=ubi.Login(new Users(uname,upass));
if(b){
System.out.println("登录成功!");
try {
req.getRequestDispatcher("index.jsp").forward(req, resp);
} catch (ServletException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}else{
System.out.println("登录失败!");
try {
resp.sendRedirect("login.jsp");
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
9.在WEB-INF目录下写config.properties
login=com.zking.servlet.LoginDo10.配置web.xml
<!-- 配置总的Servlet -->
<servlet>
<servlet-name>totalServlet</servlet-name>
<servlet-class>com.zking.servlet.TotalServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>totalServlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>到此,一个简单的用mvc框架进行登录的例子就写好了。
1468

被折叠的 条评论
为什么被折叠?



