Javaweb总结(华清远见)
这次的课程内容主要学习了如何将数据库、前端、后端相互关联起来,达到可以通过前端页面的各种事件,触发相应的事务,操作数据库的数据。
java连接mysql
1、创建一个用于用于实现连接的DBUtil类
public class DBUtil {
}
2、引入依赖包
- 最好的选择,就是去maven中央仓库下载。https://mvnrepository.com/
3、定义数据库驱动和URL以及数据库用户名和密码
-
定义url、用户名、密码,设置为静态、不可变的
static final String URL="jdbc:mysql://localhost:3306/数据库名?serverTime=Asia/Shanghai"; static final String root="root";//用户名 static final Strign pwd="***";//密码
-
定义数据库驱动,获取连接,并处理异常。
static { try { Class.forName("com.mysql.cj.jdbc.Driver");//注册驱动 } catch (ClassNotFoundException e) { e.printStackTrace(); } } //获取连接 public static Connection getConn() { Connection conn = null; try { conn = DriverManager.getConnection(URL, root, pwd); } catch (SQLException e) { e.printStackTrace(); } return conn; }
-
设置一个方法用于关闭连接、数据库,释放资源
public static void getClose(Connection conn, PreparedStatement pst, ResultSet rs) { try { if (conn != null) { conn.close(); } if (pst!=null){ pst.close(); } if (rs!=null){ rs.close(); } } catch (SQLException e) { e.printStackTrace(); } }
注意:
对于java连接MySQL数据库,总的来说还是很简单的,主要点就那些,另外要注意的是驱动包(MySQL :: Download Connector/J)不能少,不然是肯定连不到数据库的,其次就是在注册驱动与实例化Statement对象时要使用java异常机制try/cath
Servlet
Servlet程序就是用于处理服务器端的动态资源请求(Request)并返回生成的响应(Response)给WebServer,进而返回给客户端。
1、实现Servlet接口,继承HttpServlet类。
2、使用注解@WebServlet配置Servlet
3、重写service方法
@WebServlet("*.do")
public class SchoolCurdServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
- HttpServletRequest代表客户端的请求,用户通过Http协议访问服务器,HTTP请求中的所有信息会被封装到HttpServletRequest,通过这个HttpServletRequest的方法,获得客户端的所有信息。
- HttpServletResponse给客户端响应一些信息。
编码格式
resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
重定向
resp.sendRedirect(req.getContextPath()+"/login.jsp");
- 重定向实现页面转跳,重定向时,url会发生变化。
请求转发
RequestDispatcher rd = req.getRequestDispatcher("update.jsp");
rd.forward(req,resp);
- 请求转发实现页面转跳,请求转发时,url不会产生变化。
会话(COOKIE)
Cookie是一种客户端技术,其被保存在客户端。用户访问服务器时会携带Cookie,这样服务器就知道是谁来访问了。
Cookie ck = new Cookie("name", name);
ck.setMaxAge(30 * 60);//设置有效期
Cookie ck1 = new Cookie("pwd", pwd);
ck1.setMaxAge(30 * 60);
resp.addCookie(ck);
resp.addCookie(ck1);
会话(SESSION)
会话(Session)是一个用户在Web访问中一整套动作的过程。
HttpSession session = req.getSession(); //得到Session
session.setAttribute("name",new User("小明",18));//往Session中存东西
Person person = (Person) session.getAttribute("person");//get Session中的数据
session.removeAttribute("person");// 删除Session数据
session.invalidate();// 手动注销Session
jsp
简单一点理解就是把html和Java代码整合在一起写。
1、在jsp中的html代码和平时一样写就可以。
<form action="<%=request.getContextPath()%>/login.do">
<table>
<tr>
<td><label>用户名:</label></td>
<td><input type="text" name="name" value="${name}"></td>
</tr>
<tr>
<td><label>密码:</label></td>
<td><input type="password" name="password" value="${pwd}"></td>
</tr>
<tr>
<td colspan="2"><input type="checkbox" name="save" value="1" checked>是否记住密码?</td>
</tr>
<tr>
<td><input type="submit" value="登录"></td>
<td><input type="reset" value="重置"></td>
</tr>
</table>
</form>
2、在jsp中的Java代码需要用<% %>装起来。
<%
int sum = 0;
for (int i = 1; i <=100 ; i++) {
sum+=i;
}
out.println("<h1>Sum="+sum+"</h1>");
%>
el表达式
${ }
- 获取数据
- 执行运算
- 获取web开发的常用对象
<%
String name="小明";
request.setAttribute("name",name);
%>
<h1>欢迎${name},使用系统</h1>
案例(登录)
dao层
public class UserDao {
Connection conn;
PreparedStatement pst;
ResultSet rs;
public User getUser(String name1, String pwd1){
conn= DBUtil.getConn();
String sql="select * from user where u_name=? and u_pwd=?";
List<User> list = new ArrayList<>();
try {
pst=conn.prepareStatement(sql);
pst.setString(1,name1);
pst.setString(2,pwd1);
rs = pst.executeQuery();
while (rs.next()) {
Integer id=rs.getInt(1);
String name2=rs.getString(2);
String pwd2=rs.getString(3);
Integer rId=rs.getInt(4);
User user = new User(id, name2, pwd2,rId);
return user;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
DBUtil.getClose(conn,pst,rs);
}
return null;
}
}
service层
public class UserService {
private UserDao dao=new UserDao();
public User add(User user){
return dao.getUser(User);
}
servlet层
@WebServlet("*.do")
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=utf-8");
req.setCharacterEncoding("utf-8");
UserService service = new UserService();
String name = req.getParameter("name");
String pwd = req.getParameter("password");
User u = dao.user(name, pwd);
if (u != null) {
System.out.println("登陆成功");
}else {
System.out.println("登陆失败");
}
}
启动,访问地址。
结束语:
JavaWeb是Java中用于动态Web开发的核心技术,我们使用它可以完全实现所有Web应用。