版权声明:本文为博主原创文章,未经博主允许不得转载。 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);
}
}