JAVA--JSTL

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/caoshiminYQS/article/details/86546822

Web:

测试1:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>core</title>
</head>
<body>
    <%--
        创建变量
        在request域中,创建一个属性名为name
        值为张三的域属性
    --%>
    <c:set var="name" value="张三" scope="request"/>
    <%--
        如果要修改域属性中的JavaBean
        target:JavaBean在域属性中的属性名
        property:要修改的JavaBean的属性
        value:要修改成什么值
    --%>
    <c:set var="user" property="gender" target="女"/>
    ${requestScope.name}
    <br>
    ${requestScope.user.gender}
</body>
</html>

测试2:
 

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>core</title>
</head>
<body>
    <%--直接显示在jsp页面中--%>
    <%--value属性中可以使用EL表达式查找域属性 --%>
    <c:out value="你好"/>
    <c:out value="${requestScope.user.gender}" default="找不到"/>

    <%--test:判断条件,里面写一个EL表达式做判断--%>
    <c:if test="${6>=6}" var="result" scope="request">
        <h1>抽到短短那是啥</h1>
    </c:if>

    <%--如果下面有需要用到相同的判断条件--%>
    <%--则可以直接使用request域中的result变量来判断--%>
    <%--该变量,就保存了上面那个if判断的结果--%>
    <c:if test="${result}">
        <h1>人生的打印速度</h1>
    </c:if>
    <table>
        <tr>
            <th>我是表头</th>
        </tr>
    <%--<c:forEach begin="0" end="10" step="2">--%>
        <%--<tr>--%>
            <%--<td>hi✿(。◕‿◕。)✿</td>--%>
        <%--</tr>--%>
    <%--</c:forEach>--%>
    <%--
        这个写法,就是Java中的增强for循环
        user是在循环中使用的变量
        users是从域中找到的集合对象
    --%>
    <c:forEach var="user" items="${requestScope.users}" varStatus="vs">
        <tr>
            <td>${user}角标:${vs.index}第几个:${vs.count}当前对象:${vs.current}</td>
        </tr>

    </c:forEach>
    </table>
    <%--
        会在value指向的路径前面,加上项目名
        就相当于:day32/index.jsp
    --%>
    <a href="<c:url value="/index.jsp"/>">我会跳转</a>

</body>
</html>

Index:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  $END$
  </body>
</html>

JAVA:

been包:

 User:

package com.yanqiushi.bean;

public class User {
    private String name;
    private String gender;

    @Override
    public String toString() {
        return "User{" +
                "name='" + name + '\'' +
                ", gender='" + gender + '\'' +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public User(String name, String gender) {

        this.name = name;
        this.gender = gender;
    }

    public User() {

    }
}

Web包:

AllFilter:

package com.yanqiushi.Web;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebFilter(filterName = "AllFilter",urlPatterns = {"/pic","/set"})
public class AllFilter implements Filter {
    public void destroy() {
    }

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        // 单一职责原则
        // 一个类,只有一个功能
        // 开闭原则
        // 对扩展开放,对修改关闭
        // 依赖倒置原则

        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");
        HttpServletRequest request = (HttpServletRequest) req;
        HttpServletResponse response = (HttpServletResponse) resp;
        Object username = request.getSession().getAttribute("username");
        if (username != null) {
            chain.doFilter(req, resp);
            return;
        }
        // 重定向是要加上项目名的
        // TODO "绝对路径"
        response.sendRedirect(request.getContextPath()+"/login.html");
    }

    public void init(FilterConfig config) throws ServletException {

    }

}

PicFilter:

package com.yanqiushi.Web;

import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;

@WebFilter(filterName = "PicFilter",urlPatterns = "/pic")
// 这里这个urlPatterns,指的是要拦截的路径
public class PicFilter implements Filter {
    public void destroy() {
    }

    /**
     * 当用户访问PicServlet时
     * 会先访问到PicFilter
     * 执行doFilter方法
     * 在该方法中,存在参数chain
     * 使用这个参数的doFilter方法可以选择放行
     * 如果不执行chain.doFilter方法
     * 那么会拦截该请求
     *
     * 可以在Filter#doFilter中
     * 对request或response做某些配置
     * (比如,可以设置编码)
     * @param req
     * @param resp
     * @param chain
     * @throws ServletException
     * @throws IOException
     */

    public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
        String user = req.getParameter("user");
        if (user != null) {
            chain.doFilter(req, resp);
            return;
        }
        resp.getWriter().write("there is no user");
    }

    public void init(FilterConfig config) throws ServletException {

    }

}

PicServlet:

package com.yanqiushi.Web;

import org.apache.commons.io.IOUtils;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.InputStream;

@WebServlet(name = "PicServlet",urlPatterns = "/pic")
public class PicServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // File,FileReader,FileInputStream
        // 都是找本机中的文件

        // 要想找本项目中的文件
        // 需要使用ServletContext#getResourceAsStream
        // 相对路径
        // 这里这个相对路径,是相对web文件夹的
        InputStream resource = getServletContext().getResourceAsStream("img/1.png");

//        byte[] bytes = new byte[1024*1024*10];
//        int read = resource.read(bytes);
        byte[] bytes = IOUtils.toByteArray(resource);

        response.getOutputStream().write(bytes);

        // 类对象.getClassLoader();
        // 会获得一个ClassLoader对象
        // 称为: 类加载器
        // 可以帮助我们加载一些文件
        // 路径: 相对src


    }
}

SetServlet:

package com.yanqiushi.Web;

import com.yanqiushi.bean.User;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@WebServlet(name = "SetServlet",urlPatterns = "/set")
public class SetServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {


    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<User> users = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            User user = new User();
            user.setName("下面有请"+i+"号男嘉宾");
            user.setGender("男");
            users.add(user);
        }
        request.setAttribute("users",users);
        request.getRequestDispatcher("2_core.jsp").forward(request,response);
    }
}

猜你喜欢

转载自blog.csdn.net/caoshiminYQS/article/details/86546822