JavaWeb总结

1.servlet类继承HttpServlet

重写service

service含有HttpServletRequest和HttpServletResponse两个类所创建的对象request和response

request:请求对象

response:响应对象

1.1 servlet编码方式设置

resp.setContentType("text/html;charset=UTF-8");//解决中文在游览器中显示的乱码
req.setCharacterEncoding("UTF-8");//解决接收前端提交的参数包含中文的时候出现的乱码

1.2 获取前端传入的参数

String eHireDate=req.getParameter("eHireDate");

1.3 如果前端传入的参数要进行数据转换,要进行判空

Date date=new Date();
if (eHireDate!=null){
            date=new SimpleDateFormat("yyyy-MM-dd").parse(eHireDate);
        }

1.4 web.xml文件的配置

<servlet>
        <!--给servlet命名-->
        <servlet-name>curd</servlet-name>
        <!--servlet的类名-->
        <servlet-class>servlet.EmpCurdServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <!--使用servlet的名字, 通过这个名字,找到servlet对应的类-->
        <servlet-name>curd</servlet-name>
        <!--servlet对应的url地址 , 通过在浏览器中使用这个地址
        ① 浏览器地址栏输入这个地址
        ② form的action , 表单提交使用
        ③ 超链接中使用
        -->
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

小结:

接收前端提交的数据

http://localhost:8080/webapp/servlet-url?key=value&k1=v1&k2=v2......

request对象getParameter(key) , 获取请求参数

getParameter 方法的返回值是String类型,使用的时候需要注意数据类型的转换

如果前端没有提交该参数, getParameter 返回值是null

如果前端提交的中文出现乱码, 设置编码为utf-8: request.setCharacterEncoding("utf-8")

响应结果

通过response对象的getWriter() 方法,得到输出流

通过输出流,输出字符串内容,作为响应结果

设置响应结果的类型 和字符编码: resp.setContentType("text/html;charset=UTF-8");

text/html , 这个是浏览器能解析的html格式

application/json , 这个是浏览器能解析的json格式 (后期在ajax中使用)

浏览器对不能解析的格式,就提示你下载(test/html , 就是浏览器不能解析的格式,就 提示下载。)

1.5 servlet 的映射方式

        tomcat 优先查找servlet ,如果没有符合的servlet ,那么就找静态资源,如果也没有静态资源被找到, 就404

url匹配:

/具体名称:: 精确地址 ,没有扩展名, 以/开始。

/具体名称.扩展名:精确地址, 有扩展名, 以 / 开始

*.扩展名:通配符 + 扩展名, 所有以.do结尾的请求,都会被拦截, 不能以/开始。

/:拦截所有请求, 但不拦截jsp

/*:拦截所有请求

1.6在jsp中使用Java语句

<%
    // ----  登陆成功的用户,才可以访问这个jsp页面
    Object val = session.getAttribute("val");
    if(val == null||(boolean) val==false){
        response.sendRedirect(request.getContextPath() + "/login.jsp");
    }
%>

在jsp中使用循环

<%
        Object emps = request.getAttribute("emps");
        if (emps != null) {
            if (emps instanceof List) {
                List<Emp> list = (List<Emp>) emps;
                for (int i = 0; i < list.size(); i++) {
                    Emp e = list.get(i);
    %>
    <tr>
        <td><%=e.geteName()%></td>
        <td><%=e.geteJob()%></td>
        <td><%=e.geteManager()%></td>
        <td><%=e.geteHireDate()%></td>
        <td><%=e.geteSalary()%></td>
        <td><%=e.getDeptNo()%></td>
        <td><a href="<%=request.getContextPath()%>/toUpdate.do?eno=<%=e.getEno()%>">修改</a>&nbsp;&nbsp;<a href="<%=request.getContextPath()%>/delete.do?eno=<%=e.getEno()%>">删除</a></td>
    </tr>
    <%
        }
        }
        }
    %>

1.7 jsp中el表达式的使用

el表达式是jsp页面上,用于方便的获取到转发到jsp页面上的数据的一种表达式语言。

语法规则: ${变量} , ${对象.属性}

实例:

<h1>age:${age}</h1>

1.8 转发与重定向

转发实例:

req.setAttribute("emp",emp);
RequestDispatcher rd=req.getRequestDispatcher("emp/updateEmp.jsp");
rd.forward(req,resp);

1.第一步设置转发的属性值

2.第二步设置转到到哪个页面

3.第三步进行转发

转发原理:

转发的就是一个请求处理了一部分功能,然后开始另一个请求处理剩下的功能. 其本质就是一个请 求 转发是共享request, response对象 ,因此可以把需要转发的数据保存在request对象中。 浏览器的地址栏地址保存不变。(显示第一个请求的地址)

重定向实例:

resp.sendRedirect(req.getContextPath()+"/toLogin.do");

将页面重定向到指定的页面中

重定向原理:重定向是一个请求的功能完成了,然后开启另一个请求,做另一个功能。 本质是两个请求。(第一 个请求是我们主动发的, 第二个请求是浏览器收到302代码和重定向的url地址, 然后浏览器主动 发送的请求。) 重定向因为是两个不同的请求,所以是两个不同的request对象,因此不能共享数据。 浏览器地址栏的地址是显示重定向的地址。(显示第二个请求的地址)

1.9 jstl标签

1.导入jar包:

<dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.2</version>
    </dependency>

2.导入标签库:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--taglib指令
prefix="c" , prefix 前缀 , 表示在使用的标签的前面都要加上c: ,解决命名冲突
--%>

3.标签的使用:

<c:choose>
<c:when test="${age1<6}">
儿童
</c:when>
<c:when test="${age1<18}">
青少年
</c:when>
<c:when test="${age < 36}">
青年
</c:when>
<c:otherwise>
青壮年
</c:otherwise>
</c:choose>

2..cookie的使用

cookie和session的使用

区别:

cookie : 客户端状态管理的技术

session:服务器端状态管理技术

1.cookie

1.1  定义cookie

Cookie cookie = new Cookie("mycard" , "1");

1.2. 设置cookie的属性

c.setValue(count +"");
c.setMaxAge(30);

1.3  添加cookie

resp.addCookie(cookie);

1.4 获取cookie

Cookie[] cookies = req.getCookies();

2.session

2.1.session中保存数据的原理

        getSession(): 规则就是如果有就根据sessionid获取session对象,如果没有就直接创建一个 session对象。

        getSession()的使用:getSession(boolean) : true, 同getSession()功能, false , 如果找不到session对象,就返回null.

2.2 使用步骤:

1.获取session对象

HttpSession session = req.getSession(); 

2.设置session属性值(把数据保存在session对 象中):

session.setAttribute("loginname" , name); 

3.session中获取数据

Object loginname = session.getAttribute("loginname");

4.session中删除数据

session.removeAttribute("loginname");

6.设置session无效

session.invalidate();

使用情况:一般在退出系统的时候,需要清空session中保存的数据, 使用invalidate方法,让session失 效。

7.session的生命周期:session默认在会话期间有效

8.session会话超时,可以设置session的有效期

session.setMaxInactiveInterval(60);

学习心得:

在JavaWeb的学习期间,我因为粗心遇到了许许多多的问题,但是都被我发现或者问老师解决了,没有及时的复习,我也渐渐的忘掉了一些概念,导致我只知道怎么使用,却有点不明白原因了,我觉得我因该及时复习,去巩固所学到的知识,在JavaWeb我认为有四个学习要点,servlet的使用,cookie和session的使用,以及JavaWeb的作用域,pageContext :只在当前页面有效 request : 请求期间有效 session: 会话期间有效 application : 程序运行期间有效。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值