Servlet+jsp+jdbc+mvc思想实现信息管理系统——总结

使用Myecplise 开发环境;

建立数据库,实现用户信息的读出和存入。

ca9eb77e6856a14560694d632d7a0b36473.jpg

新建一个web project项目,在WebRoot 下创建登陆主界面 login.jsp    ,该界面能实现 :

       1) 登陆跳转    2)注册跳转

            实现登陆功能:

    需要读取数据库中存取的用户信息,登陆名uname 和 密码 pwd, 在src 中建立mvc分层实现,使代码更加清晰,可维护性高;创建实体类pojo(User,)读取用户信息的信息数据流转:servlet -->service-->dao-->service-->servlet ,在login.jsp中输入对应的操作符,UserServlet类中, 获取操作符,判断要调用的功能。   该功能为拿到登陆页面的uname,pwd,对数据库的账号和密码进行查询校验。,建立对应的文件包和类:            

    3a889bb802e70ef49a2df41c563b829e7cc.jpg建立实体类的作用(引文csdn):https://blog.csdn.net/qq_27263999/article/details/50408913

UserServlet 中校验账户和密码代码段:

public class UserServlet extends HttpServlet {
     protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		 
		 //设置请求编码格式
		req.setCharacterEncoding("utf-8");
		//设置响应编码格式
		resp.setContentType("text/html;charset=utf-8");
		//获取操作符,判断要调用的页面,及方法
		String oper = req.getParameter("oper");
		if("login".equals(oper)){
			//调用登陆处理
			checkUserLogin(req,resp);
             }else{
			logger.debug("没有此操作符"+oper);
			 
		}
	 
	}
//处理登陆
	private void checkUserLogin(HttpServletRequest req, HttpServletResponse resp) throws IOException, ServletException {
				//获取请求信息
				String uname = req.getParameter("uname");
				String pwd = req.getParameter("pwd");
			 
				//处理请求信息
					//获取service 层对象
				 
				UserService us = new UserServiceImpl();
				 
				//校验
				User u = us.checkUserLoginService(uname, pwd);
				if(u != null){
					//获取session对象
					HttpSession hs = req.getSession();
					 //将用户存取到session中
					hs.setAttribute("user", u);
					//重定向
					
					resp.sendRedirect("main/main.jsp");
				}else{
					//添加标识符到request中
					req.setAttribute("flag", 0);
					//请求转发
					req.getRequestDispatcher("/login.jsp").forward(req, resp);
				}
				 
				
				 
				 
		
	}
}

就service及serviceimpl、dao,daoimpl代码段:

public interface UserService {
	/**
	 * 检验用户登陆
	 * @param uname
	 * @param pwd
	 * @return
	 */
	User checkUserLoginService(String uname,String pwd);
}

impl段:
public class UserServiceImpl implements UserService {
//创建dao层
	UserDao ud = new UserDaoImpl();
	public User checkUserLoginService(String uname, String pwd) {
        User u = ud.checkUserLoginDao(uname, pwd);
        return u;
}

dao段:
public interface UserDao {
	/**
	 * 根据用户名和密码查询信息
	 * @param uname
	 * @param pwd
	 * @return
	 */
	User checkUserLoginDao(String uname,String pwd);
daoimpl段:
public class UserDaoImpl implements UserDao {

	public User checkUserLoginDao(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/0925", "root", "123");
			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"));
				u.setSex(rs.getString("sex"));
				u.setAge(rs.getInt("age"));
				u.setBirth(rs.getString("birth"));
			}
			
		} catch (Exception e) {
			// TODO: handle exception
		}finally{
			try {
				rs.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				ps.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return u;
	}

jdbc:1、声明jdbc对象,2、创建变量、try-catch语句块{    3、加载驱动,4、获取连接,5、创建sql命令 6、创建sql命令对象,7、给占位符赋值    8、执行    }        9、关闭资源     10、返回

当查询到输入的用户名和密码存在于数据库中,则使用  重定向 实现跳转到主页面main.jsp    ,失败则使用请求转发

        重定向:resp.sendRedirect("main/main.jsp");        请求转发:req.getRequestDispatcher("/login.jsp").forward(req,resp);

                        就相对路径和绝对路径的理解(引文csdn): https://blog.csdn.net/suyu_yuan/article/details/52733418

        重定向的作用(请求转发和重定向的作用与区别引文csdn): https://blog.csdn.net/cuiyaoqiang/article/details/51798722

 

登陆成功进入主界面:可实现的功能:

    1) 查看个人信息    2)修改密码    3)查看用户信息    4)退出功能

在WebbRoot 下新建文件夹main,创建main.jsp 主界面。

查看个人信息,新建form 表单,显示用户的个人信息,使用session 技术,在用户登陆到界面时,session 会保存当前账户的所有信息,

所以在userinfo.jsp 中 拿到session 对象,就能拿到该账户的所有信息,

   <table class="tablelist">
    	<thead>
    	<tr>
        <th>用户ID<i class="sort"><img src="images/px.gif" /></i></th>
        <th>用户名</th>
        <th>密码</th>
        <th>性别</th>
        <th>年龄</th>
        <th>出生年月</th>
        </tr>
        </thead>
        <tbody>
        <tr>
        <td><%=((User)session.getAttribute("user")).getUid() %></td>
        <td><%=((User)session.getAttribute("user")).getUname() %></td>
        <td><%=((User)session.getAttribute("user")).getPwd() %></td>
        <%
        	String sex=((User)session.getAttribute("user")).getSex();
        	if("1".equals(sex)){
        %>
        <td>男</td>
        <%}else{ %>
        <td>女</td>
        <%}%>
        <td><%=((User)session.getAttribute("user")).getAge() %></td>
        <td><%=((User)session.getAttribute("user")).getBirth() %></td>
        </tr> 
        </tbody>
    </table>

修改密码功能:

    获取修改密码的操作符,创建修改密码页面reg.jsp,    使用校验两次密码一致且不能为空

	$(function(){
		//校验密码修改
		$("#fm").submit(function(){
			if($("#newPwd").val()==""){//校验新密码
				alert("新密码不能为空");
				return false;
			}else if($("#cfPwd").val()==""){//校验确认密码
				alert("确认密码不能为空");
				return false;
			}else if($("#newPwd").val()!=$("#cfPwd").val()){//校验新密码和确认密码是否一致
				alert("两次密码 不一致");
				return false;
			}else{
				return true;
			}
		})
	})

在 UserServlet中 建立修改密码功能,UserChangePwd(req,resp),    在service .dao层中 实现数据的流转,存入到数据库中,使用sql 语句update t_user set pwd=? where uid=?    ,在使用HttpSession 获取session 对象,使用hs.setAttribute("pwd",true);保存对象信息在request 作用域中,在 login.jsp 中拿到该信息,

  <%
    	//判断是否是账号密码修改界面
    	Object pwd = session.getAttribute("pwd");
    	if(pwd != null){
   %>
   	<div style="text-align: center;"> 
    <span style="font-size:15px">用户密码修改成功</span>
     </div> 
     <%} 
		session.removeAttribute("pwd");     
     %> 

在拿到只是,,需要使用session.removeAttribute("pwd"),不然login.jsp界面会一致显示 用户密码修改成功,使用session 后,销毁,当用户登陆时,重新拿到新的session。

 

 

转载于:https://my.oschina.net/u/3788977/blog/2218990

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于MVC模式的JSP Servlet JDBC JavaBean简单的购物车是一个基于Web应用的电子商务平台。MVC模式指的是Model-View-Controller模式,它将应用程序分为三个部分:模型(Model)、视图(View)和控制器(Controller)。在购物车应用中,模型负责处理业务逻辑和数据存取,视图负责展示界面给用户,控制器负责处理用户请求并将相应交给模型和视图。 JSP是JavaServer Pages的缩写,它是一种服务器端的Java技术,用于创建动态的Web页面。Servlet是在服务器端运行的Java应用程序,用于处理客户端的请求并生成响应。JDBC是Java数据库连接的缩写,用于连接和操作数据库。JavaBean是可重用组件的一种Java类。 在简单的购物车应用中,用户可以通过视图(比如一个网页)浏览商品并将其添加到购物车中。当用户点击结算时,控制器会处理用户的请求。它会将用户的购物车数据传递给模型,模型负责处理购物车中商品的逻辑(比如计算总价),并使用JDBC和JavaBean来操作数据库并记录相关数据。最后,视图会展示购物车中的商品和价格,告诉用户购物车已经更新。 在整个过程中,MVC模式的应用使得各个部分的代码分离清晰,便于维护和拓展。JSPServlet用于处理Web页面和用户请求,JDBC用于连接和操作数据库,JavaBean用于管理业务逻辑和数据。这样的设计使得购物车应用更加模块化、可靠和高效。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值