JSP-1

1:使用tomcat服务器的JavaEE的包
2.根据工作时的方式,建立File文件,而不是jsp文件,由于是更改美工提供好的html文件

JSP页面中的注释

1.<!--注释内容-->                           
    HTML注释,注释中的内容如果包含Java代码,这些Java代码会被执行;                       
2.<%--注释内容%>                            
    JSP特有的注释,如果注释的内容中 出现Java代码,会被忽略;                        

jsp小脚本

语法规则:<%... ...%>                    
合法内容:能够写在方法里的Java代码片段都可以作为小脚本                   
转移成Servlet是的规则,原封不动成为Servlet类的                  
Service() 方法里面的一段代码

JSP表名

语法规则: <%=……%>               
     <%  for(int i=0;i<20;i++){  %> 
合法内容:变量,变量加运算符组合的表达式,有返回值得方法                                    
转移成Servlet时的规则:在Service()方法中用out.print语句输出该变量,表达式,方法的值;                                 
        <%=i%>                              
        <%=pf(i) %> 

JSP定义函数

语法规则:<%!....%>                                      
合法内容L成员属性或成员方法的声明;                                      
<%@page pageEncoding=""utf-8"" %>
<!--  1、JSP中可以直接写HTML-->
<!doctype html>
<html>
 <head>
  <meta charset=""utf-8"">
  <title>第1个JSP</title>
 </head>
 <body>
   <!-- 声明:定义函数 -->
   <%!
     public int pf(int n){
    return n*n;
   }
   %>
   <ul>
     <!-- 2.JSP中可以写Java -->
     <!-- 2.1 JSP脚本:完整的Java代码行 -->
     <%
      for(int i=0;i<20;i++){
     %>
       <!-- 2.2JSP表但是:要输出的变量 -->  
       <li><%=i%></li> 
       <li><%=pf(i) %></li>           
     <% 
      }
     %>
   </ul>   
 </body>
</html>"                                    


JSP页面的指令:控制JSP在转译成Servlet类时生成的内容

语法规则<%@指令名  属性=值 %>                 
常见指令:                   
    page指令              
    include指令               
    taglib指令                

page指令

<!--pageEncoding:声明当前文件的编码。
    contentType:响应是通知浏览器输出的内容格式。-->
<%@page pageEncoding=""utf-8""  
                  contentType=""text/html""  
                  import=""java.util.*,java.text.*""%>                              

include指令

  <!-- 将date.jsp引入到此处,相当于将其内容复制到此处。 -->
     <%@include file=""date.jsp"" %>                                

JSP工作原理

这里写图片描述

    #JSP隐含(内置)对象                    

1.request

`-HttpServletRequest                

2.response

`-HttpServletResponse               

3.out

·-JSPWriter             
·-相当于PrintWriter                

4.config

.-ServletConfig             

5.application

.-ServletContext                

6.session

·-HttpSession               

7.object

·-Object                

8.exception

`-Throwable             
`-网页中的异常,当异常发生时才可用              

9.page

`-指代当前页面,相当于this                

9.pageContext

`-可以给页面提供数据             
·-事实上该对象引用了其他的8个隐含对象;               

使用示例

<%=request.getParameter(“user”)%>
<%String user=request.getParameter(“user”);%>“`

/**
 * 解决系统在出现异常时的不友好提示,避免客户端看到有关错误的任何说明
 * 
 * 两种解决办法:
 * 1:捕获到异常时,绑定错误提示信息,转发到指定的错误页面。
 * 2:声明式处理,即在捕获到异常时,将其封装成ServletException 后抛给容器,在web.xml中添加配置,
 * 在捕获到异常后由容器控制着跳转到指定的错误页面。
 * 
 */
public class ActionServlet extends HttpServlet {

 protected void service(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {
  request.setCharacterEncoding(""utf-8"");
  response.setContentType(""text/html;charset=utf-8"");
  PrintWriter out = response.getWriter();

  //获取请求资源路径
  String uri=request.getRequestURI();
  //获取请求资源路径中除应用名以外的部分
  String action=uri.substring(uri.lastIndexOf(""/"")+1,uri.lastIndexOf("".""));
  HttpSession session=request.getSession();
  //创建员工管理类
  EmployeeDao dao=new EmployeeDao();

  //判定请求动作种类,分不同种类情况处理
  if(action.equals(""list"")){
   try{
    List<Employee> emps=dao.findAll();
    //判定数据到request
    request.setAttribute(""emps"", emps);
    //转发
    request.getRequestDispatcher(""listEmp.jsp"").forward(request, response);
   }catch(Exception e){
    e.printStackTrace();
    //out.println(""系统繁忙"");
    //1.编程式的处理异常
    request.setAttribute(""err_msg"", ""系统出错,请重试"");
    request.getRequestDispatcher(""error.jsp"").forward(request, response);
   }
  }else if(action.equals(""add"")){
   String name=request.getParameter(""name"");
   double salary=Double.parseDouble(request.getParameter(""salary""));
   int age=Integer.parseInt(request.getParameter(""age""));
   try{
    Employee emp=new Employee();
    emp.setName(name);
    emp.setSalary(salary);
    emp.setAge(age);

    dao.save(emp);
    response.sendRedirect(""list.do"");

   }catch(Exception e){
    e.printStackTrace();
    //out.println(""系统繁忙"");
    //2.将异常抛给容器,在web.xml中添加声明,变成声明式的处理异常
    throw new ServletException(e);
   }
  }else if(action.equals(""load"")){
   int id=Integer.parseInt(request.getParameter(""id""));
   try{
    Employee emp=dao.findById(id);
    request.setAttribute(""emp"", emp);
    request.getRequestDispatcher(""updateEmp.jsp"").forward(request, response);
   }catch(Exception e){
    e.printStackTrace();
    out.println(""系统繁忙"");
   }
  }else if(action.equals(""delete"")){
   int id=Integer.parseInt(request.getParameter(""id""));
   try{
    dao.delete(id);
    response.sendRedirect(""list.do"");
   }catch(Exception e){
    e.printStackTrace();
    out.println(""系统繁忙"");
   }
  }else if(action.equals(""update"")){
   int id=Integer.parseInt(request.getParameter(""id""));
   String name=request.getParameter(""name"");
   double salary=Double.parseDouble(request.getParameter(""salary""));
   int age=Integer.parseInt(request.getParameter(""age""));

   Employee emp=new Employee();
   emp.setName(name);
   emp.setSalary(salary);
   emp.setAge(age);
   emp.setId(id);

   try {
    dao.modifty(emp);
    response.sendRedirect(""list.do"");
   } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }

  }else if(action.equals(""regist"")){
   UserDao userDao=new UserDao();   
   //1.获取表单中的用户名等信息
   String userName=request.getParameter(""username"");
   String name=request.getParameter(""name"");
   String pwd=request.getParameter(""pwd"");
   String gender=request.getParameter(""sex"");
   //2.根据用户名查询实体
   //3.判断实体是否为null
   //4.等于null则执行插入
   //不等于空则判定提示信息后跳转

   try{
    User u=userDao.findByUserName(userName);
    if(u!=null){
     request.setAttribute(""regis_err"", ""用户名已存在"");
     request.getRequestDispatcher(""regist.jsp"").forward(request, response);
    }else{
     u=new User();
     u.setUserName(userName);
     u.setPwd(pwd);
     u.setName(name);
     u.setGender(gender);
     userDao.save(u);
     response.sendRedirect(""login.jsp"");
    }
   }catch(Exception e){
    e.printStackTrace();
    throw new ServletException(e);
   }

  }else if(action.equals(""login"")){
   UserDao userDao=new UserDao(); 
   //1获取表单中的用户名等信息
   String userName=request.getParameter(""name"");
   String pwd=request.getParameter(""pwd"");
   String number=request.getParameter(""vcode"");
   String code=session.getAttribute(""code"").toString();
   //2根据用户名查询实体
   try{
    User u=userDao.findByUserName(userName);    
    if(u==null ||!u.getPwd().equals(pwd)){
     request.setAttribute(""login_err"", ""用户名或者密码错误"");
     request.getRequestDispatcher(""login.jsp"").forward(request, response);
    }else if(!code.equalsIgnoreCase(number)){
     request.setAttribute(""validate_err"", ""验证码错误"");
     request.getRequestDispatcher(""login.jsp"").forward(request, response);
    }else{

     //创建用户名及密码Cookie编码状态
     Cookie userNameCookie=new Cookie(""userName"",URLEncoder.encode(userName,""UTF-8""));
     Cookie pwdCookie=new Cookie(""pwd"",URLEncoder.encode(pwd,""UTF-8""));

     //设置Cookie的路径
     userNameCookie.setPath(""/web04"");
     pwdCookie.setPath(""/web04"");

     //设置Cookie的生存周期1个月及一次
     userNameCookie.setMaxAge(30*24*60*60);
     pwdCookie.setMaxAge(0);
     //添加到response
     response.addCookie(userNameCookie);
     response.addCookie(pwdCookie);

     response.sendRedirect(""list.do"");
    }
   }catch(Exception e){
    e.printStackTrace();
    throw new ServletException(e);
   }
   //3如果实体等于null或者密码不相等则绑定信息后转发回login
   //4非空且密码相等则登录成功,重定向到查询页面
  }

 }

}
<%@page contentType=""text/html;charset=UTF-8"" pageEncoding=""UTF-8"" %>
<%@page import=""entity.*,java.util.*"" %>
<html>
 <head>
  <title>emplist</title>
  <meta http-equiv=""Content-Type"" content=""text/html; charset=UTF-8"">
  <link rel=""stylesheet"" type=""text/css"" href=""css/style.css"" />
 </head>
 <body>
  <div id=""wrap"">
   ...
   ...
    <div id=""content"">
     <p id=""whereami"">
     </p>
     <h1>
      Welcome!
     </h1>
     <table class=""table"">
    ...

      <% 
       List<Employee> emps=(List<Employee>) request.getAttribute(""emps"");

       for(int i=0;i<emps.size();i++){
       Employee emp=emps.get(i);
      %>
       <tr class=""row<%=i%2+1 %>"">
        <td><%=emp.getId() %></td>
        <td><%=emp.getName() %></td>
        <td><%=emp.getSalary() %></td>
        <td><%=emp.getAge() %></td>
        <td>
         <a href=""delete.do?id=<%=emp.getId()%>""
          onclick=""return confirm('是否确认删除<%=emp.getName()%>信息?');""
         >删除</a>
         &nbsp;
         <a href=""load.do?id=<%=emp.getId() %>"">修改</a>
        </td>        
       </tr>
      <% 
       }
      %>
     </table>
     <p>
      <input type=""button"" class=""button"" value=""Add Employee"" onclick=""location='addEmp.jsp'""/>
     </p>
    </div>
   </div>
   <div id=""footer"">
    <div id=""footer_bg"">
    ABC@126.com
    </div>
   </div>
  </div>
 </body>
</html>

转发和重定向都用来解决2个WEB组件(Servlet/JSP)之间的跳转问题;

    1.两个组件存在依赖关系,则用转发                   
    2.一般情况下 查询时用到转发;                    
    3.一般情况下,增加,修改,删除后重定向到查询;                    

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值