Javaweb总结(华清远见)

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应用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值