java学习历程(2):web项目入手(MVC)

2016.12.13

java学习历程(2):web项目入手(MVC)

一.最基本的项目构架
jsp+javaBean+servlet
既MVC框架:View+model+Controller
MVC的理解

JSP:只负责在前段向客户显示前段界面
javaBean:负责进行数据处理,方法的实现
servlet :相当于一个路由器,去route&&forword数据流
这里写图片描述

并附代码解释:(简单的登陆页面,校验用户的用户名和密码是否正确)
在servlet中的解释几点:
(1):servelet的原理
servelet的原理
个人的理解是,servlet是服务器端的java程序,至于功能,我想放在MVC中可以更好的理解,例如,用户在jsp前段发送request请求传向服务器(唯一表示:网络协议+IP地址+port端口号),服务器在此时即为servlet去判断调用哪个model即javaBean去处理数据,这样思考的的话,前段,判断,处理全部业务全部被分离处理,干净利索。

例如:

package com.seLvlet.deMo_a;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class myservlet extends HttpServlet {

/**
 * Constructor of the object.
 */
public myservlet() {
    super();
}

/**
 * Destruction of the servlet. <br>
 */
public void destroy() {
    super.destroy(); // Just puts "destroy" string in log
    // Put your code here
}

/**
 * The doGet method of the servlet. <br>
 * 
 * This method is called when a form has its tag value method equals to get.
 * 
 * @param request
 *            the request send by the client to the server
 * @param response
 *            the response send by the server to the client
 * @throws ServletException
 *             if an error occurred
 * @throws IOException
 *             if an error occurred
 */
public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {
    String name=request.getParameter("username");
    String password=request.getParameter("password");
    myBean mb = new myBean();
    mb.connectDb(name, password);
    String message=mb.getMessage();
    String url="returnInf.jsp?tt="+message+"";
    url=new String(url.getBytes("GBK"),"ISO-8859-1");
    response.sendRedirect(url);
}

/**
 * The doPost method of the servlet. <br>
 * 
 * This method is called when a form has its tag value method equals to
 * post.
 * 
 * @param request
 *            the request send by the client to the server
 * @param response
 *            the response send by the server to the client
 * @throws ServletException
 *             if an error occurred
 * @throws IOException
 *             if an error occurred
 */
public void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    this.doGet(request, response);
}

/**
 * Initialization of the servlet. <br>
 * 
 * @throws ServletException
 *             if an error occurs
 */
public void init() throws ServletException {
    // Put your code here
}

}

这里对servlet的xml文件进行说明一下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
    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_3_0.xsd">
  <servlet>
    <description>This is the description of my J2EE component</description>
    <display-name>This is the display name of my J2EE component</display-name>
    <servlet-name>myservlet</servlet-name>
    <servlet-class>com.seLvlet.deMo_a.myservlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>/myservlet</url-pattern>
  </servlet-mapping>

</web-app>

part1:

This is the description of my J2EE component
This is the display name of my J2EE component
myservlet
com.seLvlet.deMo_a.myservlet

说明了servlet的名字和位置

part2:

servlet-mapping>
    <servlet-name>myservlet</servlet-name>
    <url-pattern>/myservlet</url-pattern>
  </servlet-mapping>

映射的话是对于下一波转发的URL的设置,<url-pattern>/myservlet</url-pattern>则为web访问该servlet的方法

(2):javaBean的作用:分离并处理业务逻辑,拓展结构

“`
package com.seLvlet.deMo_a;

import java.sql.*;

import com.seLvlet.deMo_a.*;
import com.serLvlet.cometure.dbConnection;

public class myBean {
private String message = “”;

public void connectDb(String name, String password) {
    String driver = "com.mysql.jdbc.Driver";
    String url = "jdbc:mysql://127.0.0.1:3306/test";
    String user = "root";
    String mysqlpassword = "root";
    String sqlUpdate = "INSERT INTO test_aa(NAME,PASSWORD) VALUES('admin','admin')";
    String sqlQueryC = "SELECT NAME,PASSWORD FROM test_aa WHERE NAME='admin'AND PASSWORD='admin'";
    int rowNumber = 0;
    String sqlQuery = "SELECT * FROM test_aa";
    try {
        Class.forName(driver);
        Connection con = DriverManager.getConnection(url, user,
                mysqlpassword);
        if (!con.isClosed()) {
            System.out.println("数据库连接成功");
        }
        Statement st1, st2 = null, st3;
        st1 = con.createStatement();// st1查询语句
        st1.executeUpdate(sqlUpdate);
        ResultSet rs1 = st1.executeQuery(sqlQuery);
        // ResultSet rs3=st2.executeQuery(sqlQueryPassW);
        /*
         * st2=con.createStatement();// st3=con.createStatement();//
         */
        rowNumber = this.rowNu_Next(rs1);
        ResultSet rs2 = st1.executeQuery(sqlQueryC);
        // -------------开始数据库数据校验
        while (rs2.next()) {
            if (name.equals(rs2.getString("NAME"))
                    && password.equals(rs2.getString("PASSWORD"))) {
                message = "successed to login";
            }else{
                message="failed to login";
            }
        }
    } catch (ClassNotFoundException e1) {
        // TODO: handle exception
        e1.printStackTrace();
    } catch (SQLException e2) {
        // TODO Auto-generated catch block
        e2.printStackTrace();
    }
}

public int rowNu_Next(ResultSet rs) {
    int Nu = 0;
    try {
        while (rs.next()) {
            Nu++;
        }
        rs.first();
    } catch (SQLException e3) {
        // TODO Auto-generated catch block
        e3.printStackTrace();
    }
    return Nu;
}

public int rowNu_last(ResultSet rs) {
    int Nu = 0;
    try {
        rs.last();
        Nu = rs.getRow();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    return Nu;
}

public String getMessage() {
    System.out.println(message);
    return message;
}

}

(3):jsp页面只是单纯的显示页面并不做过多的说明

posted @ 2016-12-13 12:04  理工物联网  阅读(96)  评论(0编辑  收藏  举报