中软实习培训记录二(0721)
一、Tomcat的下载安装
1、进入Apache Tomcat官网,选择你需要的版本进行下载:
地址http://tomcat.apache.org/download-70.cgi
2、下载完毕后,将解压后的文件夹放到用户的资源库中:
finder=》用户=》用户名=》资源库
3、在终端进行操作
sudo chmod 755 Library/tomcat/bin/*.sh
sudo sh startup.sh
上述两个指令分别是分配权限,并对tomcat进行启动,并且启动sh文件前,要先进入文件所在文件夹,不然会出错
启动完毕后,在safari中访问网址http://localhost:8080/,如果能正常打开tomcat首页,说明tomcat 配置启动成功,最后通过命令进行关闭即可:
sh shutdown.sh
二、Java Enterprise ——登陆跳转 demo
1、创建一个Java Enterprise新项目,在创建时注意勾选Web Application,同时注意选用Application Server为之前下载的Tomcat server
2、next,填写项目名,完成创建
3、项目创建完毕后,考虑到要实现的demo要求,首先要加入一个lib目录,方便后续加入jar包
4、按照前一日添加jar包的步骤,在讲jar包复制粘贴到lib文件夹之后,需要右击,选择“add as library”,成功添加
5、添加完毕后,打开file=》project structure,在artifacts里面可以看到添加成功的两个包,截图如下,若没有正常出现,界面下方会有信息提示,选择“Fix”,选择“add all missing……”即可
6、在src下面事先创建下属文件夹,方便之后代码归类,更加清晰
不同的目录有着不同的意义
dao:与数据库有直接的操作
model:定义实体类
service:负责处理业务逻辑
servlet:拦截业务请求
util:工具类
7、首先进行数据库部分的连接操作,此部分在util工具类中进行:
package com0721.util;
import java.sql.*;
public class DBUtil {
public static Connection getConnection() throws ClassNotFoundException, SQLException {
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test0720?userSSL=false", "root", "1234567890");
return conn;
}
public static void closeAll(ResultSet rs,Statement state,Connection conn) throws SQLException {
if(rs!=null){
rs.close();
}
if(state!=null){
state.close();
}
if(conn!=null){
conn.close();
}
}
}
7、现在对Model目录下的实体类进行设计
对于我们所要实现的登陆界面来说,首先必要的就是user,每一个user都包括了id、name、password,age为新增的属性,在设置时,设置其为私有,因此需要添加getter and setter函数,方便之后进行调用(可用快捷键进行添加,windows是alt+insert,macOS是command+N)
package com0721.model;
public class User {
private int id;
private String name;
private String password;
private String age;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
最后添加getter and setter之后,还有添加toString函数,同样可以通过上述快捷键得到:
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", password='" + password + '\'' +
", age='" + age + '\'' +
'}';
}
8、编者习惯于从底层网上写,因此在成功完成数据库完结、实体类设计之后,开始着手dao部分,也就是数据库处理部分
数据库表中内容:
对于本次demo要实现的登陆系统,设计思路主要是根据用户输入的用户名,在数据库中进行搜索比对,若有对应的数据项,则数据库会将该项进行return,返回后,将密码与输入的进行比较,相等则登陆成功。
package com0721.dao;
import com0721.model.User;
import com0721.util.DBUtil;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class UserDao {
public User selectByName(String name){
ResultSet rs=null;
Connection conn=null;
PreparedStatement pstmt=null;
DBUtil util=new DBUtil();
User user=new User();
try{
conn=util.getConnection();
pstmt=conn.prepareStatement("select * from test1 where name = ?");
pstmt.setString(1,name);//传入数据,1表示第一个?的位置为name
rs=pstmt.executeQuery();
while (rs.next()){
user.setId(rs.getInt(1));
user.setName(rs.getString(2));
user.setPassword(rs.getString(3));
user.setAge(rs.getString(4));
}
}catch(Exception e){
e.printStackTrace();
}finally {
try {
util.closeAll(rs,pstmt,conn);
} catch (SQLException e) {
e.printStackTrace();
}
}
return user;
}
}
9、完成数据库操作后,就可以开始写业务逻辑部分了,在service处,创建UserService类
package com0721.service;
import com0721.dao.UserDao;
import com0721.model.User;
public class UserServer {
UserDao userDao=new UserDao();
public User selectByName(String name){
return userDao.selectByName(name);
}
}
10、在serlvet目录处,新建类JavaClass,servlet有两种实现方式,一种是继承HttpServlet类
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String name=req.getParameter("name");
String password=req.getParameter("password");
}
}
其中的数据,有界面传输过去,因此需要修改原有的index.jsp文件,对界面进行设计
在此之外,需要在lib中再导入一个包:servlet-api.jar,该包可以直接在Tomcat安装包的lib文件夹中找到
11、index.jsp中具体对界面进行简单的设计,包括了两个输入框,以及提交按钮:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
<h1>登陆界面</h1>
<form action="/login" method="post">
name:<input name="name" type="text">
password:<input name="password" type="password">
<input type="submit" value="登陆">
</form>>
</body>
</html>
12、重新回到serlvet部分,原先仅仅是设定了两个参数,因此接下来进行一个处理,即判断输入内容是否与数据库的一致:
public class LoginServlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
UserServer userService=new UserServer();
String name=req.getParameter("name");
String password=req.getParameter("password");
User user= userService.selectByName(name);
if(password.equals(user.getPassword())){
resp.getWriter().write("Success");
}else{
resp.getWriter().write("Failed");
}
}
}
13、接下来配置web.xml,其中包括了请求路径
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>loginServlet</servlet-name>
<servlet-class>com0721.servlet.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>loginServlet</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>
</web-app>
14、运行,自动得到界面
根据数据库中的信息,输入,显示登陆成功