JavaWeb mvc模式用户登陆功能实现
准备工作
- eclipse关联tomcat
window->preference->Server->RuntimeEnvironments
没添加的话点右侧add添加已添加要修改可以先选中然后edit( 可以配置tomcat位置和installed JREs)
参考下图:
2.mysql数据库建表字段及数据如下
我的数据库名叫ajaxstu表名t_user 下面的LoginDao连接数据库查询会看到
第一步 新建Web项目MyJspProject
建项目时,这里的TargetRuntime选择自己的tomcat版本 Dynamic web module version即servlet版本选择2.5如下图
点击next(不要finish)再next然后这里的对号√要勾上不然建的项目里没有web.xml要手动添加如下图
建好之后在MyJspProject项目上右键build path调整jdk版本为工作空间版本(一致不用改,不一致要remove然后重新添加)
add library 选择serverruntime配置tomcat(如果不配置tomcat import javax.servlet.Servlet会报错)
调整好之后libraries如下(mysql-connector-java为之后添加的这步还没有)
第二步 webContent目录下新建
1:s.jsp (body中加一个表单)
<form action="Login_Servlet2" method="post">
用户名:<input type="text" name="uname"><br/>
密码:<input type="password" name="upwd"><br/>
<input type="submit" >
</form>
2:success.jsp :
<body>
登陆成功! 欢迎您:
<% String name=request.getParameter("uname");
out.print(name);
%>
</body
第三部:JavaResources目录下的src中新建servlet包:
JavaResources目录下的src中新建servlet包:
1.包中新建User.java持久化类方便保存传输信息内有账号密码两属性
添加构造方法和getset方法(数据存储model)
String name;
String pwd;
- Login_Servlet2.java Servlet实现类接受拦截的请求 并在其中调用model层的LoginDao的login方法(controller)
public class Login_Servlet2 extends HttpServlet {
//继承HttpServlet类 重写其doget dopost方法用于处理get类型和post类型的请求//doget dopost逻辑相同dopost中调用doget避免重复代码
private static final long serialVersionUID = 1L;
public Login_Servlet2() {
System.out.println("servlet创建");
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String uname = request.getParameter("uname"); String upwd = request.getParameter("upwd");
User user=new User(uname,upwd);
int res=-1;
res= LoginDao.login(user);
if(res==-1) {
System.out.println("登陆失败");
response.sendRedirect("s.jsp");
}else {
request.getRequestDispatcher("success.jsp").forward(request, response); }
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
3.LoginDao.java(连接数据库,用传进来来的user对象的信息进行查询 若查到返回用户id否则放回-1)(逻辑处理model)
public static int login(User lu) {
int flag=-1;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
} catch (ClassNotFoundException e) {
System.out.println("加载驱动失败!");
e.printStackTrace();
}
//url格式==>jdbc协议:mysql协议//ip:端口/(你的数据库库名)
String url="jdbc:mysql://localhost:3306/ajaxstu?serverTimezone=UTC&characterEncoding=utf-8";
String dbuser="root";//数据库用户名
String password="123456";//数据库密码
Connection conn=null;
try {
conn = DriverManager.getConnection(url, dbuser, password);
} catch (SQLException e) {
System.out.println("建立连接失败");
e.printStackTrace();
}
String sql6="select * from t_user where username=?and password=?";
PreparedStatement ps=null;
try {
ps = conn.prepareStatement(sql6);
} catch (SQLException e) {
System.out.println("获取执行语句对象失败");
e.printStackTrace();
}
try {
ps.setString(1, lu.getName());
ps.setString(2,lu.getPwd());
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ResultSet rs=null;
try {
rs = ps.executeQuery();
if(rs.next()) {
//System.out.println(rs.getInt(1));
flag=rs.getInt(1);
}
else {
System.out.println("未查到");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {
try {
if(rs!=null) {
rs.close();
}
ps.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// Statement s = conn.createS
//System.out.println(flag);
return flag;
}
由于LoginDAO中要操作数据库,所以要导入mysql-connector-java-x.x.x.jar此jar包要放到WEBContent目录下的WEB-INF下的lib目录中,(放到其他地方会报错:
ClassNotFound"com.mysql.cj.jdbc.Driver";)
在WEB-INF目录下的web.xml中配置拦截器 (servlet2.5及以下) 3.0以上也可用注解//@WebServlet("/Login_Servlet2")
创建Tomcat服务器
添加项目MyJspProject
运行服务器
浏览器输入 http://localhost:8080/MyJspProject/s.jsp 即可进入
效果如下
登陆成功