javaweb考试浅了解

1.<jsp:forward page=""/>和response.sendRedirect("")的区别:

本质区别:第一个为服务器跳转 第二个为客户端跳转:

2.jsp的内置对象中哪些能用于保存对象值?它们的生命周期分别为?,作用域为什么? 

 区别:生命周期与作用域

            生命周期:对象存在时间段

            作用域:对象的可见性范围            

request 

   生命周期:仅在当前请求中有效,一旦请求结束,request都西昂就会被销毁

    作用域:请求作用域,即只在当前请求中有效,不能跨请求共享。

session

     生命周期:与用户会话相关。会话开始可以是用户登录,会话结束可以是用户登出,会话超时或浏览器关闭等。在会话期间,session对象一直存在,并且可以在多个请求中共享数据。一般使用页面传值时常用。

      作用域:会话期间有效。

Application

       生命周期:与web应用的启动和关闭相关联。(也可以写成与Tomcat服务器的启动和关闭相关联)

       作用域:应用程序作用域。

3.PreparedStatement和Statement两个类的对象的区别是什么?

        ①PreparedStatement对象传递SQL语句进行预编译后,使得该语句可以重复执行而不需要重新解析和编译,提高编译效率。而Statement对象遇到新的Sql语句后需要重新分析和编译,编译效率低。

         ②PreparedStatement可避免SQL注入问题。由于用户输入的数据往往是不可预知和无法控制的,直接使用Statement对象执行动态生成的SqL语句,则容易受到SQL注入攻击。而使用PreparedStatement对象时,SQL语句和参数是分开处理的,参数的类型和值都是程序员指定的,这样可以避免SQL注入问题,提高应用程序的安全性。

4.MVC设计思想

 5.jsp+数据库 

 1.假设数据库为db_news2021,表名为user,输出全部用写为index.jsp;

2.在表中设置一个删除操作:设为delete.jsp。(写出关键代码)

index.jsp的关键代码(数据库的查询+表格)
<%
    Connection conn = null;
    PreparedStatement ps = null;
    ResultSet rs = null;
//    1.加载驱动
    Class.forName("com.mysql.cj.jdbc.Driver");
//    2.数据库的连接(端口号:在端口号没被占用的时候数据库一般是3306。可以通过命令行指令查看。Tomcat端口好一般是8080,可在Tomcat编辑配置中查看)
    String url = "jdbc:mysql://localhost:3306/db_news2021";
    String user = "root";
    String password = "123456";
    conn = DriverManager.getConnection(url,user,password);
//     3.获取PreparedStatement的对象
    String sql = "select * from user";
    ps = conn.prepareStatement(sql);
//    4.填充占位符(省略) 占位符为sql语句中的?,但是查询全部信息不需要占位符。
//    5.执行    查询使用----executeQuery() 返回值为ResultSet
//             增删改一般使用 -------------executeUpdate() 返回值为int
//              特殊的sql语句使用-----------execute()  返回值为boolean
       rs = ps.executeQuery();

%>
  <table border="1">
      <tr>
          <td>用户名</td>
          <td>密码</td>
          <td>邮件</td>
          <td>操作</td>

      </tr>
      <%
      while(rs.next()){
      %>
      <tr>
      <%--在rs获取列值的方法 1.getString("列名");
                          2.getObject(int x) x从1开始,例如 getObject(2)代表第二列的值
             --%>
          <td><%=rs.getString("username")%></td>
          <td><%=rs.getObject(2)%></td>
          <td><%=rs.getString("email")%></td>
          <td><a href="delete.jsp?username=<%=rs.getString("username")%>">删除</a></td>
      </tr>
      <%}%>
  </table>

delete.jsp的关键代码(数据库的删除+forward跳zhuyi

 <%  //设置请求格式,防止出现乱码
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        Connection conn = null;
        PreparedStatement ps = null;
        ResultSet rs = null;
//        1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");
//        2.数据库的连接
         String url = "jdbc:mysql://localhost:3306/db_news2021";
         String user = "root";
         String password = "123456";
        conn =  DriverManager.getConnection(url,user,password);
        String sql = "delete from user where username = ?";
        ps = conn.prepareStatement(sql);
        ps.setObject(1,username);
        ps.executeUpdate();

    %>
        <jsp:forward page="index.jsp"/>

注意:1.delete.jsp之后的跳转,

           2.<%=rs.getString("username")%>里面不需要加;

6.jsp+javaBean(不包含数据库操作)

题目:对username= 张飞,password="123456"进行判断,正确的话,跳转到success.jsp中,否则跳转到fail.jsp中。

要求:

1.login.jsp登录操作

2.user用户类

3.success.jsp登录成功界面

4.fail.jsp登录失败页面

5.check.jsp登录检测页面

                      

 login.jsp的代码如下:

<%--
  Created by IntelliJ IDEA.
  User: Lenovo、
  Date: 2023/6/22
  Time: 16:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录页面</title>
</head>
<body>
   <form action="check.jsp" method="get">
       用户名:<input type="text" name="username"><br>
       密码:<input type ="password" name="password"><br>
       <input type="submit" value="提交">
   </form>
</body>
</html>

 check.jsp的代码如下:

<%@ page import="entil.user" %><%--
  Created by IntelliJ IDEA.
  User: Lenovo、
  Date: 2023/6/22
  Time: 16:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>登录检测页面</title>
</head>
<body>
    <%
//         设置请求编码格式
        request.setCharacterEncoding("utf-8");
//        获取参数 (表单的参数是以name=value的形式传过来的,例如 http://localhost:8080/Test_war/6%E9%A2%98/check.jsp?username=二等兵&password=123)
        String username = request.getParameter("username");
        String password = request.getParameter("password");
        //将属性按题目要求封装成对象
        user u = new user(username,password);
//        判断
        if(u.getUsername().equals("张飞")&&u.getPassword().equals("123456")){
            //通过session保存值,将username传给success.jsp页面
            session.setAttribute("username",username);
         %>

           <jsp:forward page="success.jsp"/>
      <%
        } else{%>
            <jsp:forward page="fail.jsp"/>
        <%}%>

</body>
</html>

success.jsp代码如下

    <% request.setCharacterEncoding("utf-8");
//       String username = session.getAttribute("username").toString();
         String username = session.getAttribute("username")+"";
        String username =(String)session.getAttribute("username");
    %>
     欢迎您,<%=username%>登录成功

 注意:getAttribute()的返回值时是Object类型,可通过连接空字符串字符串,toString()方法,强制转化转化为String类型。

fail.jsp代码如下:

登陆失败,请重新<a href="login.jsp">登录</a>

7.jsp+servlet

题目:将login2.jsp中用户名,密码通过Inputservlet处理,在success2.jsp中打印出来。

步骤和上述jsp+javaBean差不多,只写出InputServlet类。

login2.jsp代码如下:

<form action="/Test_war/InputServlet" method="get">
    用户名:<input type="text" name="username"><br>
    密码:<input type ="password" name="password"><br>
    <input type="submit" value="提交">
</form>

Inputservlet代码如下:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  //设置请求类型
    request.setCharacterEncoding("utf-8");
    String username = request.getParameter("username");
    String password = request.getParameter("password");
    user u = new user(username,password);
    request.getSession().setAttribute("user",u);
    request.getRequestDispatcher("/7ti/success2.jsp").forward(request,response);
}
success.jsp代码如下:
<% request.setCharacterEncoding("utf-8");

   String username = request.getParameter("username");
%>
 欢迎您,<%=username%>登录成功

   注意:在跳转中,可以通过地址栏输入来判断页面的位置,方便url的填写。

 8.<jsp:include page=""/>---------------动态包含 被包含页面进行编译再输出

   <%@ include file="path"%>-------------静态包含 被包含页面不进行编译,直接输出

9.,<%%>和<%!%>的区别:

原来以为<%%>的变量是局部变量,<%!%>里的变量是全局变量。现阶段的理解是:<%%>里的变量和方法从创建开始到页面被关闭。<%!%>里的变量和方法是从创建开始到服务器关闭。

     

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值