前言
虽然servlet-jsp相关已经不常用,但是循序渐进的学习,还是应该从最基础的开始。(所有代码的开发设计都是以idea为标准,eslipse会有些差别,但是大同小异。)
1、Servlet部分
1.1、创建servlet
在idea中创建Java-Web工程
创建过程:File -->New–>Java–>Java EE–>勾选Web Application–>完成创建。
在src中创建com.xxx(公司名).xxx(项目名)包,在包下创建servlet.java。
1.2、servlet 代码块
@WebServlet("/active")
public class DemoServlet extends HttpServlet {
public void service(HttpServletRequest req,HttpServletResponse resp) throws IOException, ServletException {
req.setCharacterEncoding("utf-8");
String use1 =req.getParameter("use1");
String use2 =req.getParameter("use2");
String use3 =req.getParameter("use3");
String use4 =req.getParameter("use4");
String use5 =req.getParameter("use5");
String[] use6 = req.getParameterValues("use6");
// c:接、调、存、转
//第一种存值方式(setAttribute)
req.setAttribute("use1",use1);
req.setAttribute("use2",use2);
req.setAttribute("use3",use3);
req.setAttribute("use4",use4);
req.setAttribute("use5",use5);
req.setAttribute("use6",use6);
//第二种存值方式(map)
// Map<String,Object> map = new HashMap<>();
// map.put("use1",use1);
// map.put("use2",use2);
// map.put("use3",use3);
// map.put("use4",use4);
// map.put("use5",use5);
// map.put("use6",use6);
// req.setAttribute("message",map);
//转
req.getRequestDispatcher("show.jsp").forward(req,resp);
//resp.sendRedirect("show1.jsp");
}
}
注释:
1.创建的servlet 必须继承HttpServlet 协议,否则不可以作为servlet
2.servlet 的同步开发包括:接、调、存、转。
3.在接值之前需要声明编码格式,eg:
req.setCharacterEncoding("utf-8");
4.servlet的存值方式,有两种;
4.1.setAttribute:eg:
req.setAttribute("use1",use1);
req.setAttribute("use2",use2);
4.2.map存值:eg:
Map<String,Object> map = new HashMap<>();
map.put("use1",use1);
map.put("use2",use2);
req.setAttribute("message",map);
5.跳页问题
5.1.转发:
req.getRequestDispatcher("show.jsp").forward(req,resp);
5.2.重定向:
resp.sendRedirect("show1.jsp");
区别:转发可以带参,重定向不可以带参。
转发通过forward把req,resp,全部传回原有的request,重定向是传给一个新的request。
6.注解:webservice(”/active“)。
2、配置文件(web.xml)
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
version="3.1">
<servlet>
<servlet-name>demo</servlet-name>
<servlet-class>com.ftg.learn.service.DemoServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo</servlet-name>
<url-pattern>/first</url-pattern>
</servlet-mapping>
</web-app>
详见前面所写的servlet博客浅谈servlet
3、Jsp
3.1、index.jsp
<html>
<head>
<title>第一个页面</title>
</head>
<body>
<form method="post" action="/active">
<input type="text" name="use1"/>
<input type="text" name="use2"/>
<input type="text" name="use3"/>
<input type="text" name="use4"/>
<input type="text" name="use5"/>
<input type="text" name="use6"/>
<input type="text" name="use6"/>
<<input type="submit"/>
</form>
</body>
</html>
注释:
1.index.jsp 中相对简单,只有一个form表单,用来填写数据,和提交按钮。
2.form表单中的元素
2.1.method:请求方式
2.2.action:跳页
2.3.input:输入框、button:按钮;
3.2、show.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
<%
// 1.request out
String use1 =(String) request.getAttribute("use1");
out.print(use1);
String use2 =(String) request.getAttribute("use2");
out.print(use2);
String use3 =(String) request.getAttribute("use3");
out.print(use3);
String use4 =(String) request.getAttribute("use4");
out.print(use4);
String use5 =(String) request.getAttribute("use5");
out.print(use5);
String[] use6 =(String[]) request.getAttribute("use6");
out.print(use6);
out.print(Arrays.toString(use6));
%>
</body>
</html>
注释:
1.show.jsp展示级页面。
得到值–getAttribute。
2.数组:
String[] use6 =(String[]) request.getAttribute(“use6”);
out.print(use6);
out.print(Arrays.toString(use6));
Arrays:数组帮助类
c标签循环遍历。