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 ,顺序略有调整。

  • 相关阅读:
    IDEA热部署插件JRebel使用
    IntelliJ IDEA 代码注释
    解决redis显示中文为乱码问题
    C#的六种修饰符
    Bat批处理把文件夹包括子文件夹下面的某个文件复制到另一个目录下
    html不识别<br/>,后台返回<br/>,前端不换行解决办法
    C# Task的应用
    c# 生成json字符串和解析json字符串处理
    在 C# 中将 List<dynamic> 转换为 List<string>
    C#读取主从文件的excel并把结果为pass的文件打包
  • 原文地址:https://www.cnblogs.com/lrzy/p/8303114.html
Copyright © 2011-2022 走看看