当前位置: 首页 > news >正文

网站建设开发模式h5网页设计教程案例 杨松

网站建设开发模式h5,网页设计教程案例 杨松,中国前十名别墅装修公司,阿里云 wordpress 建站 教程目录 ServletServlet的三大职责跳转:请求转发和重定向请求转发重定向汇总请求转发与重定向的区别用请求转发和重定向完善登录 JSP第一个JSP概述注释设置创建JSP文件默认字符编码集 JSP的java代码书写JSP的原理三大指令九大内置对象改造动态web工程进行示例内置对象名…

目录

      • Servlet
        • Servlet的三大职责
        • 跳转:请求转发和重定向
        • 请求转发
        • 重定向
        • 汇总
        • 请求转发与重定向的区别
        • 用请求转发和重定向完善登录
      • JSP
        • 第一个JSP
          • 概述
          • 注释
          • 设置创建JSP文件默认字符编码集
        • JSP的java代码书写
        • JSP的原理
        • 三大指令
        • 九大内置对象
          • 改造动态web工程进行示例
          • 内置对象名称来源?
          • 名单列表
        • 四大作用域
          • 概述
          • 案例测试
          • 登录完善

Servlet

Servlet的三大职责

1.接受参数 --> req.getParameter (非必须)
2.处理业务 --> 拿到数据后去做一些事情(非必须)
3.跳转(必须)–> 操作完的一个结果 两句代码

跳转:请求转发和重定向

在这里插入图片描述

请求转发

案例演示:动态web项目

AServlet

@WebServlet("/go/a")
public class AServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("AServlet");String name = req.getParameter("name");System.out.println("A-name: "+name);req.setAttribute("password", "123456");// 请求转发req.getRequestDispatcher("/go/b").forward(req, resp);}
}

BServlet

@WebServlet("/go/b")
public class BServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("BServlet");String name = req.getParameter("name");System.out.println("B-name: "+name);String password = (String) req.getAttribute("password");System.out.println("B-password: "+password);}
}

浏览器访问:http://localhost/go/a?name=zhangsan

控制台:

AServlet
A-name: zhangsan
BServlet
B-name: zhangsan
B-password: 123456

req.getRequestDispatcher(“路径”).forward(request, response); ,请求里的东西,forward可以理解为携带

带值跳转,可以访问WEB-INF中资源,地址栏不改变
发送一次请求,最后一个response起作用,不可以跨域[跨网站]访问

重定向

案例演示:动态web项目

CServlet

@WebServlet("/go/c")
public class CServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("CServlet");String name = req.getParameter("name");System.out.println("C-name: "+name);resp.sendRedirect("/go/d");}
}

DServlet

@WebServlet("/go/d")
public class DServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("DServlet");String name = req.getParameter("name");System.out.println("D-name: "+name);}
}

浏览器访问:http://localhost/go/c?name=zhangsan

控制台:

CServlet
C-name: zhangsan
DServlet
D-name: null

resp.sendRedirect(“路径”) ,响应里的东西,可以有避免重复扣款和访问外部网站之类的作用

无法带值,不能访问WEB-INF下内容,地址栏改变
两次请求,起作用的依然是最后一个,可以跨域访问

汇总

在这里插入图片描述

请求转发与重定向的区别

请求转发的特点:可以携带参数,只用一次请求,可以访问WEB-INF
重定向的特点:可以避免重复扣款场景风险,可以访问外部网站,不能访问WEB-INF

请求转发过程:浏览器 - 内部代码 - WEB-INF
重定向过程:浏览器 - 内部代码 - 浏览器 - URL

动态web项目示例:
EServlet

@WebServlet("/go/e")
public class EServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("EServlet");System.out.println("E----扣款1000");//		req.getRequestDispatcher("/go/f").forward(req, resp);
//		resp.sendRedirect("/go/f");
//		resp.sendRedirect("https://www.fu365.com/");//		req.getRequestDispatcher("/WEB-INF/haha.html").forward(req, resp);
//		resp.sendRedirect("/WEB-INF/haha.html");}
}

FServlet

@WebServlet("/go/f")
public class FServlet extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("FServlet");}
}

WEB-INF下新建haha.html
浏览器访问:http://localhost/go/e

用请求转发和重定向完善登录

webapp下WEB-INF外新建login.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><form action="/loginTest" method="post">账号:<input type="text" name="name"><br>密码:<input type="password" name="password"><input type="submit" value="post"></form>
</body>
</html>

loginTest

@WebServlet("/loginTest")
public class LoginServletTest extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=utf-8");String name = req.getParameter("name");String password = req.getParameter("password");if ( name.equals("zhangsan") && password.equals("123456") ) {resp.sendRedirect("main.html");		//这里在WEB-INF外重定向可以访问} else {req.setAttribute("msg", "登录失败");// 需要访问另外一个servlet,把参数传进页面打印出来req.getRequestDispatcher("/AAAServlet").forward(req, resp);}}
}

main.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body><h1>登录成功</h1>
</body>
</html>

AAAServlet

@WebServlet("/AAAServlet")
public class AAAServlet  extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Object attribute = req.getAttribute("msg");System.out.println(attribute);PrintWriter writer = resp.getWriter();writer.print("<!DOCTYPE html>");writer.print("<html>");writer.print("<head>");writer.print("<meta charset=\"UTF-8\">");writer.print("<title>Insert title here</title>");writer.print("</head>");writer.print("<body>");writer.print(attribute);writer.print("   <form action=\"/loginTest\" method=\"post\">");writer.print("     账号:<input type=\"text\" name=\"username\"><br>");writer.print("     密码:<input type=\"password\" name=\"password\"><br>");writer.print("     <input type=\"submit\" value=\"post\">");writer.print("   </form>");writer.print("</body>");writer.print("</html>");}
}

JSP

第一个JSP
概述

servlet:是用来写java代码的,也可以用来做页面展示(把html代码一行一行打印出去),但是不擅长做页面展示。
html:用来做页面展示,静态网页,没办法拿到Java代码,不能展示数据。
jsp:看起来像html,但是它里面可以写java代码(动态网页)。

注释

webapp下新建_01hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><!-- 不安全的注释,能在控制台看到 --><%-- 安全的注释,不能再控制台看到 --%><h1>我是第一个JSP</h1>
</body>
</html>
设置创建JSP文件默认字符编码集

JSP文件内右键 - Preferences - utf-8

JSP的java代码书写
<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head><body><!-- jsp写java代码的第一种方式,打印到后端控制台 --><%for(int i = 0;i<5;i++){System.out.println("i: "+i);}int b =520;%><!-- jsp写java代码的第二种方式,显示在页面上 --><%=b %><!-- jsp写java代码的第三种方式,涉及JSP的底层原理 --><%!String ss ="abc";// System.out.println("abc: "+ss);%></body>
</html>
JSP的原理

jsp需要tomcat运行才能正常展示内容
在这里插入图片描述
访问JSP - tomcat的web.xml - 两个servlet类(把JSP转化为servlet/java文件,把html代码打印出去)

tips:tomcat的web.xml是全局的,项目中的web.xml是局部的

三大指令

1.page :当前页面的一些配置,jsp生成java文件时会引用这些配置

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>

2.taglib:不讲 (下一节来说 )

3.include:引用一个文件,常用于导航栏
在这里插入图片描述
_03include.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><%@include file="head.jsp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><div>螺旋丸</div>
</body>
</html>

_04include.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><div>千年杀</div><%@include file="head.jsp" %>
</body>
</html>

head.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><div style="background-color:red;text-align:center;font-size:50px">火影忍者</div>
九大内置对象
改造动态web工程进行示例

改造LoginServletTest,登录失败后跳转到login.jsp

@WebServlet("/loginTest")
public class LoginServletTest extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=utf-8");String name = req.getParameter("name");String password = req.getParameter("password");if ( name.equals("zhangsan") && password.equals("123456") ) {resp.sendRedirect("main.html");		//这里在WEB-INF外重定向可以访问} else {req.setAttribute("msg", "登录失败");// 需要访问另外一个servlet,把参数传进页面打印出来
//			req.getRequestDispatcher("/AAAServlet").forward(req, resp);req.getRequestDispatcher("login.jsp").forward(req, resp);}}
}

webapp下新增login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%=request.getAttribute("msg") %><form action="/loginTest" method="post">账号:<input type="text" name="name"><br>密码:<input type="password" name="password"><input type="submit" value="post"></form>
</body>
</html>
内置对象名称来源?

来自tomcat根据jsp生成的java文件,在那里面定义了
在这里插入图片描述

名单列表
HttpServletRequest    request  		请求对象    
HttpServletResponse   response 		响应对象
ServletConfig         config      	配置对象
ServletContext      application  
Throwable          	 exception   	异常( 你当前页面是错误页时才有 isErrorPage="true" )
JspWriter         		out    		输出流对象
Object           		page   		相当于this 是当前页的意思
PageContext         pageContext  	没好大用处 
HttpSession           session  		会话对象(重要)
四大作用域
概述
HttpServletRequest  request    一次请求
HttpSession       session      一次会话	同一个浏览器访问tomcat就是一次会话
PageContext    pageContext    	当前页面	作用不大
ServletContext   application     整个会话tomcat没有关闭就不会消失,在不同的浏览器都能拿到

在这里插入图片描述

案例测试

webapp下新增_05page.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%pageContext.setAttribute("iampageContext","我是当前页对象");request.setAttribute("iamrequest", "我是请求对象");session.setAttribute("iamsession", "我是会话对象");application.setAttribute("iamapplication", "我是应用对象");%><%=pageContext.getAttribute("iampageContext")%><%=request.getAttribute("iamrequest")%><%=session.getAttribute("iamsession")%>	<%=application.getAttribute("iamapplication")%>
</body>
</html>

webapp下新增_06page.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%=pageContext.getAttribute("iampageContext")%><%=request.getAttribute("iamrequest")%><%=session.getAttribute("iamsession")%>	<%=application.getAttribute("iamapplication")%>
</body>
</html>

启动tomcat,浏览器访问http://localhost/_05page.jsp,我是当前页对象 我是请求对象 我是会话对象 我是应用对象

浏览器访问http://localhost/_06page.jsp,null null 我是会话对象 我是应用对象

换一个浏览器访问http://localhost/_06page.jsp,null null null 我是应用对象

重启原浏览器访问http://localhost/_06page.jsp,null null null 我是应用对象

重启tomcat访问http://localhost/_06page.jsp,null null null null

修改_05page.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%pageContext.setAttribute("iampageContext","我是当前页对象");request.setAttribute("iamrequest", "我是请求对象");session.setAttribute("iamsession", "我是会话对象");application.setAttribute("iamapplication", "我是应用对象");%><%request.getRequestDispatcher("_06page.jsp").forward(request, response);%>
</body>
</html>

启动tomcat,浏览器访问http://localhost/_05page.jsp,null 我是请求对象 我是会话对象 我是应用对象

修改_05page.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%pageContext.setAttribute("iampageContext","我是当前页对象");request.setAttribute("iamrequest", "我是请求对象");session.setAttribute("iamsession", "我是会话对象");application.setAttribute("iamapplication", "我是应用对象");%><%//request.getRequestDispatcher("_06page.jsp").forward(request, response);response.sendRedirect("_06page.jsp");%>
</body>
</html>

启动tomcat,浏览器访问http://localhost/_05page.jsp,null null 我是会话对象 我是应用对象

修改_06page.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%=pageContext.getAttribute("iampageContext")%><%=request.getAttribute("iamrequest")%><%=session.getAttribute("iamsession")%>	<%=application.getAttribute("iamapplication")%><%request.getRequestDispatcher("_05page.jsp").forward(request, response);%>
</body>
</html>

启动tomcat,浏览器访问http://localhost/_05page.jsp,报错:该网页无法正常运作,localhost将您重定向的次数过多。

登录完善

改造login.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8" isErrorPage="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body><%if(request.getAttribute("msg")!=null){ %><%=request.getAttribute("msg") %><%} %><form action="/loginTest" method="post">账号:<input type="text" name="name"><br>密码:<input type="password" name="password"><input type="submit" value="post"></form>
</body>
</html>

LoginServletTest设置数据到session作用域

@WebServlet("/loginTest")
public class LoginServletTest extends HttpServlet{@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ServletContext servletContext = req.getServletContext();HttpSession session = req.getSession();req.setCharacterEncoding("UTF-8");resp.setContentType("text/html;charset=utf-8");String name = req.getParameter("name");String password = req.getParameter("password");if ( name.equals("zhangsan") && password.equals("123456") ) {session.setAttribute("name", "zhangsan");resp.sendRedirect("main.jsp");		//这里在WEB-INF外重定向可以访问} else {req.setAttribute("msg", "登录失败");// 需要访问另外一个servlet,把参数传进页面打印出来
//			req.getRequestDispatcher("/AAAServlet").forward(req, resp);req.getRequestDispatcher("login.jsp").forward(req, resp);}}
}

新建main.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
恭喜你登录成功<%=session.getAttribute("name")%>
</body>
</html>
http://www.yayakq.cn/news/99863/

相关文章:

  • 气血不足做网站江小白网络营销案例分析
  • 好看的旅游网站模板下载软件项目管理书籍推荐
  • 职业技术学院网站建设项目龙岩小程序报价
  • 网站建设需要哪些资料湘潭网站建设 都来磐石网络
  • 驻马店做网站推广青柠影院免费观看电视剧高清
  • 毕业室内设计代做网站梧州高端网站建设服务
  • 免费自助建站哪个网站最好还没有做网站可以先备案域名吗
  • 学做网站论坛账号如何去做一个网站
  • 广州网站搭建费用郑州企业建站模板
  • 成都网站建设木子网络免费网站软件推荐
  • 三维家是在网站上做还是在app上江苏太平洋建设集团官方网站
  • 外包给网站建设注意事项wordpress页面瀑布流
  • 国外网站如何做seowordpress 一栏主题
  • 常州的网站建设博物馆 网站 建设
  • 中英文网站建设费用视频点播网站开发教程
  • 成品网站w灬源码伊园网络管理员证书
  • 大兴网站定制开发济南 网站推广
  • 这几年做哪个网站能致富网站设计原型
  • 建设厅是做什么的搜索引擎seo外包
  • 淘宝网站是谁做的好网站建设程序员提成
  • 国际会议网站建设wordpress设置爬虫页面
  • 表白网站制作源码淘宝客网站一定要备案吗
  • 学了网站建设的心得体会提供网站建设的理由
  • 交流平台网站怎么做nas可以做网站
  • 做网站每天都要花钱么天津网站建设方案策划
  • 有没有专门做老年婚介的网站南宁市网站设计
  • 加强网站功能建设进入公众号继续阅读下一章
  • 影楼网站模板漂亮网站首页 html
  • 域名注册网站系统wordpress 完整备份
  • 网站开发费怎么做账小程序商城设计