JavaWeb开发技术—MVC开发模式—代码分层—0001

}else{

response.sendRedirect(“no.jsp?status=”+0);

}

%>

web.xml

<?xml version="1.0" encoding="UTF-8"?>

NO-MVC-Model-001

index.html

index.htm

index.jsp

default.html

default.htm

default.jsp

login

com.dk.web.UserLogin

login

/login

ok.jsp

<%@page language=“java” import=“java.util.,java.sql.

pageEncoding=“utf-8”%>

<!doctype html public “-//w3c//dtd html 4.01 Transitional//EN”>

No MVC-ok

ok

no.jsp

<%@page language=“java” import=“java.util.,java.sql.

pageEncoding=“utf-8”%>

<!doctype html public “-//w3c//dtd html 4.01 Transitional//EN”>

No MVC-no

no

状态值:

<%=request.getParameter(“status”) %>

UserLogin.java

package com.dk.web;

import java.io.IOException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class UserLogin extends HttpServlet {

@Override

protected void service(HttpServletRequest req,

HttpServletResponse resp) throws ServletException, IOException {

System.out.println(“service========================>>>>>>>>>>>>>>>”);

System.out.println(req.getParameter(“status”));

req.setAttribute(“user”, “Jack”);

req.getRequestDispatcher(“/WEB-INF/index.jsp”).forward(req, resp);

}

}

加载项目到Tomcat后,启动Tomcat运行程序:

录入请求路径:http://localhost:8080/NO-MVC-Model-001/login

如果没有异常并且查询到用户记录后,页面效果:

如果存在异常或没有用户记录,页面效果:

你会发现,以上开发代码login.jsp中里面包含很多功能的代码,这样设计虽然在软件开发初期使项目的开发进度加快。但后期的维护量非常庞大,开发中需求变更时代码的修改也很吃力,所以的功能代码混杂在一起就像一团乱麻。所以就要对代码进行分层,

M层使用JavaBean服务组件,V层可以使用JSP文件只显示数据, C层可以使用Servlet或其他的框架组件。


使用MVC构建的项目目录结构:

具体代码细节:

Userinfo.java

package entity;

public class Userinfo {

private String id;

private String username;

private String password;

public String getId() {

return id;

}

public void setId(String id) {

this.id = id;

}

public String getUsername() {

return username;

}

public void setUsername(String username) {

this.username = username;

}

public String getPassword() {

return password;

}

public void setPassword(String password) {

this.password = password;

}

}

GetConnection.java

package dbtools;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.SQLException;

public class GetConnection {

public static Connection getConnectionFromJDBC()

throws ClassNotFoundException, SQLException {

String url = “jdbc:mysql://localhost:3306/demo”;

String driverName = “com.mysql.jdbc.Driver”;

String username = “root”;

String password = “1234”;

Class.forName(driverName);

Connection connection = DriverManager.getConnection(url, username,

password);

return connection;

}

public static void main(String[] args) throws ClassNotFoundException, SQLException {

System.out.println(getConnectionFromJDBC());

}

}

UserinfoDao.java

package dao;

import java.sql.Connection;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import dbtools.GetConnection;

import entity.Userinfo;

public class UserinfoDao {

public Userinfo findUserinfo(String username, String password)

throws SQLException, ClassNotFoundException {

System.out.println(“DAO________findUserinfo_____”+username+“:”+password+“________>>>>>”);

Userinfo userinfo = null;

String sql = “SELECT * FROM USER WHERE username=? AND PASSWORD=?”;

Connection connection = GetConnection.getConnectionFromJDBC();

PreparedStatement ps = connection.prepareStatement(sql);

ps.setString(1, username);

ps.setString(2, password);

ResultSet rs = ps.executeQuery();

while (rs.next()) {

String iddb = rs.getString(“id”);

String usernamedb = rs.getString(“username”);

String passworddb = rs.getString(“password”);

userinfo = new Userinfo();

userinfo.setId(iddb);

userinfo.setUsername(usernamedb);

userinfo.setPassword(passworddb);

}

rs.close();

ps.close();

connection.close();

return userinfo;

}

}

UserinfoService.java

import java.sql.SQLException;

import dao.UserinfoDao;

public class UserinfoService {

public boolean login(String username, String password) throws SQLException,

ClassNotFoundException {

UserinfoDao userinfoDao = new UserinfoDao();

if (userinfoDao.findUserinfo(username, password) == null) {

return false;

} else {

return true;

}

}

}

login.java

package controller;

import java.io.IOException;

import java.sql.SQLException;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import service.UserinfoService;

public class login extends HttpServlet {

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

System.out.println(“doPost===============================>>>>>>>>>>”);

request.setCharacterEncoding(“utf-8”);

try {

String username = request.getParameter(“username”);

String password = request.getParameter(“password”);

UserinfoService usRef = new UserinfoService();

if (usRef.login(username, password) == true) {

response.sendRedirect(“ok.jsp”);

} else {

response.sendRedirect(“no.jsp”);

}

} catch (SQLException e) {

// TODO Auto-generated catch block

e.printStackTrace();

} catch (ClassNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

web.xml

<?xml version="1.0" encoding="UTF-8"?>

<web-app version=“2.5”

xmlns=“http://java.sun.com/xml/ns/javaee”

xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”

xsi:schemaLocation="http://java.sun.com/xml/ns/javaee

http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">

This is the description of my J2EE component

This is the display name of my J2EE component

login

controller.login

login

/login

index.jsp

login.jsp

<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>

username:


password:


no.jsp

<%@ page language=“java” import=“java.util.*” pageEncoding=“utf-8”%>

no.jsp

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值