zoukankan      html  css  js  c++  java
  • 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 ,顺序略有调整。

  • 相关阅读:
    Attributes in C#
    asp.net C# 时间格式大全
    UVA 10518 How Many Calls?
    UVA 10303 How Many Trees?
    UVA 991 Safe Salutations
    UVA 10862 Connect the Cable Wires
    UVA 10417 Gift Exchanging
    UVA 10229 Modular Fibonacci
    UVA 10079 Pizza Cutting
    UVA 10334 Ray Through Glasses
  • 原文地址:https://www.cnblogs.com/lrzy/p/8303114.html
Copyright © 2011-2022 走看看