华清远见——javaWeb阶段总结

华清远见——javaWeb阶段总结

javaWeb:使用Java技术解决相关web互联网领域的技术总和。

总结

学习javaweb之前,首先要了解该如何创建maven项目,依赖的导入以及servlet的运用。
javaweb主要是分成了util层、entiey层、dao层、sevice层、action层以及前端界面:
util层主要是连接数据库,使得dao层能够对数据库内的数据进行操作
entity层主要是实体类
dao层主要是负责对数据向数据库增删改查的操作
service层主要是负责对数据的处理。如果没有数据处理任务的话,此层只做单纯的数据传递作用。
action层主要是负责在前端页面和后端之间传输数据的,以及进行页面的跳转,前端的数据通常是传入service层
前端界面主要就是通过jsp、html、css、json等展示数据的变换

servlet的配置

servlet

public class HelloServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req,HttpServletResponse resp) throws ServletException, IOException{
        PrintWriter writer = resp.getWriter();
        writer.println("hello servlet");
    }
}

web.xml

<servlet>
    <servlet-name>hello</servlet-name>
    <servlet-class>action.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>hello</servlet-name>
    <url-pattern>/hello</url-pattern>
</servlet-mapping>

获取路径getContextPath()

request.getContextPath(),得到工程名

request.getServletPath(),返回当前页面所在目录下全名称

request.getRequestURL(),返回浏览器地址栏地址

request.getRequestURI() ,返回包含工程名的当前页面全路径

举例:

以访问的路径为:http://localhost:8080/web01_war/hello,工程名为web01_war为例

System.out.println(req.getContextPath()); //  "/web01_war"
System.out.println(req.getServletPath()); //  "/hello"
System.out.println(req.getRequestURL()); //  http://localhost:8080/web01_war/hello
System.out.println(req.getRequestURI()); //  /web01_war/hello

request对象

对象方法

request.getMethod()获取请求方式,一般有get和post
request.getRequestURI();获取请求地址
request.getHeader(“user-agent”);获取请求浏览器信息
request.getHeader(“referer”);获取请求来源,防止盗链
request.getParameter(name)-根据name获得值

乱码问题

resp.setContentType("text/html;charset=UTF-8"); // 解决中文在浏览器中显示的乱码
req.setCharacterEncoding("UTF-8");

JSP

jsp写Java代码:<%java代码%>

jsp方法

<%!
    public void show(){
        for (int i = 0; i < 10;i++){
            System.out.println(i);
        }
    }
%>

jsp输出语句

<%
                out.print("hahahah");
                out.write("--------");
            %>

jsp循环

<%
    for (int i = 0;i < 20;i++){
        if (i % 2 == 0){%>
            <div class="dan">kk</div>
        <%}else {%>
            <div class="shuang">yy</div>
        <%}
    }
%>

jsp导包

<%@ page import="java.util.Date" %> 
<%@ page import="java.text.SimpleDateFormat" %>

转发&重定向

转发

转发的就是一个请求处理了一部分功能,然后开始另一个请求处理剩下的功能.其本质就是一个请求

转发是共享request,response对象 ,因此可以把需要转发的数据保存在request对象中。

浏览器的地址栏地址保存不变。

// 3. 转发到show.jsp 
// **** 转发的目的是把数据传输到jsp页面上,让jsp页面可以使用 
req.setAttribute("emp" , emp); 
req.setAttribute("emps" , emps); 
req.setAttribute("nowtime" , nowTime); 
req.setAttribute("age" , age); 
req.setAttribute("emp1" , emp1); 
req.setAttribute("age1" , age1); 
RequestDispatcher requestDispatcher = req.getRequestDispatcher("show.jsp"); requestDispatcher.forward(req,resp);

jsp页面获取数据

<% ArrayList<Emp> emps = (ArrayList<Emp>) request.getAttribute("emps");%>

重定向

重定向是一个请求的功能完成了,然后开启另一个请求,做另一个功能。 本质是两个请求。

重定向因为是两个不同的请求,所以是两个不同的request对象,因此不能共享数据。

浏览器地址栏的地址是显示重定向的地址。

resp.sendRedirect("show.jsp"); // 重定向

el表达式

  1. EL表达式全称:Expression Language,即表达式语言
  2. EL表达式作用:代替JSP页面中表达式脚本进行数据的输出(只能获取数据,不能设置数据)
  3. EL表达式的格式是:${表达式} ,注:EL表达式写在jsp页面中,表达式一般是域对象的key
<h1>emp:${emp}</h1>
<h1>emp信息:${emp.eNo},${emp.eName}</h1>
<h1>emp1:${emp1}</h1>
<h1>emps:${emps}</h1>
<h1>age:${age}</h1>
<h1>age1:${age1}</h1>
<h1>nowTime:${nowTime}</h1>

jstl标签库

向maven项目中导入标签库

<dependency>
      <groupId>taglibs</groupId>
      <artifactId>standard</artifactId>
      <version>1.1.2</version>
    </dependency>
    <dependency>
      <groupId>jstl</groupId>
      <artifactId>jstl</artifactId>
      <version>1.1.2</version>
    </dependency>

标签库的使用

使用前需要先引用导入的标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

使用方式

<h1>alice:
    <c:if test="${age1 >= 18}">
        成年人
    </c:if>
    <c:if test="${age1 < 18}">
        未成年人
    </c:if>
</h1>
<h1>
    alice:
    <c:choose>
        <c:when test="${age1<6}">
            儿童
        </c:when>
        <c:when test="${age1<18}">
            青少年
        </c:when>
        <c:when test="${age1<36}">
            青年
        </c:when>
        <c:otherwise>
            青壮年
        </c:otherwise>
    </c:choose>
</h1>
<table>
    <tr>
        <th>员工编号</th><th>员工姓名</th><th>入职日期</th>
    </tr>
    <c:if test="${empty emps}">
        <tr>
            <td colspan="3">当前没有员工</td>
        </tr>
    </c:if>
    <c:forEach items="${emps}" var="e">
        <tr>
            <td>${e.eNo}</td>
            <td>${e.eName}</td>
            <td>${e.eHireDate}</td>
        </tr>
    </c:forEach>
</table>

cookie

// 获取cookies 
Cookie[] cookies = req.getCookies();

//新建cookies
Cookie cookie = new Cookie("mycard","1");

// 修改cookie中的数据
cookie.setValue("数据");

// *** 设置cookie的有效期 ,过期了cookie就不能使用了。如果没有设置有效期,那么有效期默认是session期间有效。 
// *** session期间: 指你在浏览器中第一次访问某个服务器,到你把浏览器关闭的时 候,这之间这被称为session期间(session-会话) 
// *** setMaxAge(单位秒)
cookie.setMaxAge(30);

// 添加cookie , 浏览器会保存这个cookie数据
resp.addCookie(cookie);

session

session的使用

// *** 登录成功的位置
HttpSession session = req.getSession(); // 获取session对象
session.setAttribute("loginname",name); //把数据保存在session对象中

//设置session的有效期
session.setMaxInactiveInterval(60);

//获取session中的数据,返回值是Object
 Object loginname = session.getAttribute("loginname");
System.out.println(loginname+"-----");

//删除session中的数据
session.removeAttribute("loginname");

//设置session无效
session.invalidate();
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值