java web 开发入门实例

学习是个技巧活,关键是要找到重点的地方,新手在这方面的坑尤其多。看别人的教程一步一步的跟着做,隔几步就遇到一个新知识点,忍不住就百度往深处了解,一晃半天就过去了。

有的知识点要深入学习的,有的是了解下就行的。我个人感觉这个度的把握是最难的。当然这也是饶不过去的坑。

最近跟着网上的一个教程学习JAVA WEB开发,将中间遇到的坑和教训标记下:

1、JAVAC编译时,提示找不到自定义类的问题。(如果是用记事本编辑,用命令行Javac编译,需要 在环境变量中,设置CLASSPATH 指向你的classes目录);

2、关于JDBC:MYSQL的端口号,如果没有指定,会连接失败。切记根据本机的端口设置正确

3、有条件还是用ECLIPSE来编译执行,可以从控制台看到详细的错误日志。

==================================

附:入门代码及注释

1、文件及目录结构(存在TOMCAT的WEBAPPS目录下)

2、登录页面效果

3、主要代码(运行前提:需安装JDK及MYSQL)

(1)、在MYSQL 中创建数据库user ,创建用户表tb_user;

mysql -u root -p 123456 ;
create database user;


use user;
create table tb_user (
    username varchar(20) primary key,
    password varchar(20));

  

(2)创建两个JSP文件 (index.jsp  mesage.jsp)

 index.jsp 中需要用到login.jpg ,要放在images目录下面。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>JAVA 学习Reg</title>
</head>
<body>
    <center><img src="images/login.jpg"/></center>
    <center><font size=5 color="blue"><B>用户注册页面</B></font></center>
    <form action="RegServlet" method="post">  <!-- 指定将该表单交给RegServlet来处理-->
        <table align="center" width="450" border="0">
            <!--用户名行-->
            <tr>
                <td align="right">Username:</td>
                <td>
                    <input type="text" name="username">
                </td>
            </tr>
            <!--密码行-->
            <tr>
                <td align="right">Password:</td>
                <td>
                    <input type="password" name="password">
                </td>
            </tr>
            <!--确认密码行-->
            <tr>
                <td align="right">Confirm Password:</td>
                <td>
                    <input type="password" name="repassword">
                </td>
            </tr>
            <!--提交 重置行-->
            <tr>
                <td colspan="2" align="center">
                    <input type="submit" value="Reg">
                    <input type="reset" value="Reset">
                </td>
            </tr>
        </table>
    </form>
</body>
</html>

message.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<body>
    <center><img src="images/regfail.jpg"/></center>
    <%
        String info = (String)request.getAttribute("info");
            if(info != null) {
                out.print("<center>");
                out.print("<font size=10>");
                out.print("<B>");
                out.print(info);
                out.print("</B>");
                out.print("</font>");
                out.print("</center>");
        }
    %>
</body>

  

l

 以上就是展示层,结束后,可以在浏览器中输入http://localhost:8080/reg/index.jsp看下效果。(注意你TOMCAT的端口号,我用的是8080)

(3)、建立 JAVA BEAN模型层

共有4个文件,分别放在beans  dao  service  utils 目录下

文件名为 :UserBean.java           UserDao.java       SignInServlet.java    DataBaseUtil.java

UserBean.java

package beans;

/**
用户信息javabean
**/

public class UserBean {
    private String username;
    private String password;

    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;
    }
}

UserDao.java

package dao;

import utils.DataBaseUtil;
import beans.UserBean;

import java.sql.*;

public class UserDao {

    public boolean isUserExist(String username) {
        //create a connection
        Connection connection = DataBaseUtil.getConnection();

        String sql ="select * from tb_user WHERE username=?";
        try{
            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setString(1, username);
            ResultSet resultSet = ps.executeQuery();
            if(!resultSet.next()) {
                return true;
            }
        }catch(SQLException e) {
            System.out.println(e.toString());
            e.printStackTrace();
        }catch(NullPointerException f){
			f.printStackTrace();
		}finally {
            DataBaseUtil.closeConnection(connection);
        }
        return false;
    }

    public boolean isPasswordConfirm(String password, String repassword) {
        return password.equals(repassword);
    }

    public void saveUser(UserBean user) {
        Connection connection = DataBaseUtil.getConnection();

        String sql = "insert into tb_user (username, password) values(?,?) ";
        try {
            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setString(1, user.getUsername());
            ps.setString(2, user.getPassword());

            ps.executeUpdate();
        }catch(SQLException e) {
            e.printStackTrace();
        }finally {
            DataBaseUtil.closeConnection(connection);
        }
    }
}
DataBaseUtil.java
 1 package utils;
 2 
 3 import java.sql.Connection;
 4 import java.sql.DriverManager;
 5 import java.sql.SQLException;
 6 
 7 public class DataBaseUtil {
 8 
 9     public static Connection getConnection() {
10         Connection connection = null;
11         try{
12             Class.forName("com.mysql.jdbc.Driver");
13             String url = "jdbc:mysql://localhost:3306/user";
14             connection = DriverManager.getConnection(url, "root", "123456");
15             return connection;
16 
17         }catch(ClassNotFoundException nfe) {
18             nfe.printStackTrace();
19         }catch(SQLException sqle) {
20             sqle.printStackTrace();
21         }
22         return connection;
23     }
24 
25     public static void closeConnection(Connection connection) {
26         if(connection != null) {
27             try{
28                 connection.close();
29             }catch(SQLException sqle) {
30                 sqle.printStackTrace();
31             }
32         }
33     }
34 }

(3)、控制层 SignInServlet

SignInServlet.java

 
 1 package service;
 2 
 3 import beans.UserBean;
 4 import dao.UserDao;
 5 
 6 import javax.servlet.ServletException;
 7 import javax.servlet.http.HttpServlet;
 8 import javax.servlet.http.HttpServletRequest;
 9 import javax.servlet.http.HttpServletResponse;
10 import java.io.IOException;
11 
12 public class SignInServlet extends HttpServlet{
13 
14     @Override
15     public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
16         String username = request.getParameter("username");
17         String password = request.getParameter("password");
18         String repassword = request.getParameter("repassword");
19 
20         UserDao userDao = new UserDao();
21         if(username != null && !username.isEmpty()) {
22             //用户名不存在可以注册
23             if(userDao.isUserExist(username) && userDao.isPasswordConfirm(password, repassword)) {
24                 UserBean userBean = new UserBean();
25                 userBean.setPassword(password);
26                 userBean.setUsername(username);
27                 userDao.saveUser(userBean);
28                 request.setAttribute("info", "Congratulations! Reg successfully!");
29             }else {
30                 if(!userDao.isUserExist(username))
31                     request.setAttribute("info", "Sorry! Username exists!"+username+" "+password);
32                 if(!userDao.isPasswordConfirm(password, repassword))
33                     request.setAttribute("info", "Sorry! Password not confirmed!");
34             }
35         }
36         //forward to message.jsp
37         request.getRequestDispatcher("message.jsp").forward(request, response);
38     }
39 }

(4)、配置web.xml文件

 在WEB-INF目录下创建web.xml文件,指定程序的相关配置信息

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
 5          version="3.1">
 6  <!-- 欢迎页面 -->
 7     <welcome-file-list>
 8         <welcome-file>index.jsp</welcome-file>
 9     </welcome-file-list>         
10     <servlet>
11             <servlet-name>SignInServlet</servlet-name>
12             <servlet-class>service.SignInServlet</servlet-class>
13     </servlet>
14     <servlet-mapping>
15         <servlet-name>SignInServlet</servlet-name>
16         <url-pattern>/RegServlet</url-pattern>
17     </servlet-mapping>
18 </web-app>

(5)、下载相关JAR包

   从网上下载JDBC-MySQL驱动,放入lib目录中(我用的是:mysql-connector-java-5.1.30.jar

6)、编译JAVA文件

 打开reg/web-inf/CLASSES  文件夹,按住shift在窗口中点鼠标右键,选择 “在此处打开命令窗口w” 进入cmd窗口,先进入相关的子目录 ,一个一个的执行 javac **.java 将文件编译为.class文件;

上述工作完成后,启动浏览器,输入 http://localhost:8080/reg/  如果能打开页面如下,祝贺你,你的  WEB项目成功了;

  

真诚感谢 Easy sir  :

新手推荐JSP+JavaBean+Servlet MVC模式用户注册模块

代码基本照搬,改了JSP的编码类型为 UTF-8 ,顺序略有调整。

原文地址:https://www.cnblogs.com/lrzy/p/8303114.html