最近完成了一个最基本的Javaweb用户注册案例的编写(从网络上看了很多教学视频,也参考了很多他人的代码),在学习中也有一些收获,于是将自己的学习收获在这里作一个总结。作为一个初次接触Javaweb也从来没有写过博客的学习者,写的这篇博客一定存在着许多漏洞,请您谅解。
写代码需要一个强力的工具,本次使用了IntelliJ IDEA。这个编译器可真是磨人的小妖精,只是学习怎么使用这个工具就用了一段时间。
在新建一个Javaweb项目的工程中有两个比较重要的步骤:
1、导入本次项目所需的jar包
在工程中新建一个叫libs的文件夹,把从网络上找到本次项目需要的jar包粘贴到文件夹中。而后在File->Project Structure->Modules中,
选择"+",把刚刚导入的jar全部打勾,然后点下方的Apply和OK就行了。
2、Tomcat的在项目中的配置
在工程右上的小框框点一下,弹出框选Edit Configurations,选择"+",找到Tomcat Server,按照步骤把Tomcat配置到项目中。
工作流程如下图:
个人认为在学习Javaweb后端之初,就应该养成一个优秀的模块划分意识,不要把数据层,数据库控制层,控制层混乱地写在一起。或许在前期学习的过程中把这三部分割裂显得多余,但代码量增大后我们就可以看出这种编写方式在后期维护上的好处。
根据我们的业务要求,建立一个或多个User类(这需要与数据表中的数据对应,建议分析好需求后新建此类,不然后期修改很麻烦),这个类就相当于是一个个搬运工,它搬运着或是从前台获取到的数据而存入到后端的数据库中,或是从后端数据库获取到的数据而显示到前端页面。
这次只学习了怎样向数据库内添加数据,于是我们要先在xampp的Mysql中新建一个数据库和数据表(数据表根据自己的需求建,各个版本的数据库管理软件操作不同,不再赘述)。
然后在src文件夹下新建一个User类储存我们需要的数据(需要与数据表中建立的数据一一对应),然后学习写数据库连接所需要的代码。
由于数据库连接代码很繁琐,而且数据库连接的资源很宝贵,在使用之后要及时把它释放掉(而一旦代码量变大,我们就会容易忽略掉释放数据库连接资源,造成资源的浪费),所以我们可以考虑把数据库连接封装成一个工具类。参考其他文章我总结了一个JDBCUtils工具类。
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JDBCUtils {
private static String driver;//驱动
private static String url;//访问数据库的url
private static String username;//用户名
private static String password;//密码
static {
driver="com.mysql.jdbc.Driver";//需要的数据库驱动
url="jdbc:mysql://localhost:3306/test";//数据库名路径
username="root";
password="";
}
public static Connection open()
{
try {
Class.forName(driver);
return DriverManager.getConnection(url,username, password);
} catch (Exception e) {
System.out.println("数据库连接失败!");
// TODO Auto-generated catch block
e.printStackTrace();
}//加载驱动
return null;
}
/*
* 关闭数据库
*/
public static void close(Connection conn)
{
if(conn!=null)
{
try {
conn.close();//每一个数据库对象资源很宝贵,要及时关闭
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
只需在UserDao中引用这个类即可。
然后编写UserDao类管理数据表,UserDao类中使用的插入数据库数据的操作语言是insert into test(name,sex,college,stuID,QQ,PhoneNum,password,meto) values(?,?,?,?,?,?,?,?)。
百度百科是这么说的:Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。
通俗来讲,servlet就是运行在服务器上的一个小程序,用来处理服务器请求的。
1、编写一个java类,继承HttpServlet类
在本次用户注册案例中我们新建一个类叫做RegisterServlet,它继承了HttpServlet这个类,我们可以在自建的这个类中复写doGet和doPost方法。
当然在HttpServlet这个类中也有其他方法,我们重点在doGet和doPost方法,其他的方法感兴趣的可以了解一下,HttpServlet的具体方法如下:
2、重写HttpServlet类的doGet方法和doPost方法
doGet和doPost存在一些区别,具体区别可以参考doget和dopost的区别
我们可以选择把方法写在doGet()方法中,在doPost()方法中调用执行,这样,无论你提交的是post还是get方法都可以执行。实例代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String xxx = request.getParameter("xxx"); //
/*
此为获得前端数据的标准形式,括号内的文字要和前端提供给后端接口的名字
*/
User user = new User();
user.setxxx(xxx);
/*在这里new一个User对象,把从前端获得数据暂时存到User对象中
*/
UserService us = new UserServiceImpl();
try {
boolean flag = us.registerUser(user);
if(flag){
response.setCharacterEncoding("utf-8");
response.getWriter().write("注册成功");
}
else {
response.setCharacterEncoding("utf-8");
response.getWriter().write("注册失败");
}
} catch (Exception e) {
e.printStackTrace();
3、配置web.xml文件,或者使用注解对servlet进行配置
本次完成了一个简单的用户注册案例的后端代码部分,初学者可以使用一个比较简单的jsp网页验证一下。同时我们形成了一个良好架构意识,在这次代码的基础上,我们可以在JavaBean中新建更多不同的类存储不同种的对象的数据,在UserDao 中增加更多的方法实现类似用户登录,用户删除,新建不同类型账户存储表等操作,在Controller中实现向前端输出用户所要的数据等······总而言之,在已编写的代码的基础上,我们可以自己增添新的功能,而且代码大多是大同小异的。