1.JSP是HTML与JAVA 两种技术的复合
2.JSP技术特点
JSP和Servlet是本质相同的技术。
当一个JSP文件第一次被请求时, JSP引擎会将该JSP编译成一个Servlet,并执行这个Servlet。
如果JSP 文件被修改了,那么JSP引擎会重新编译这个JSP。
3.JSP引擎会在什么情况下将JSP编译成一个Servlet
JSP文件第一次被请求时或请求的JSP发生改变后
3.JSP与Servlet区别
JSP以源文件形式部署到容器中。而Servlet需要编译成class文件后部署到容器中。
JSP部署到web项目的根目录,而Servlet需要部署到WEB-INF/classes目录中。
JSP中的HTML代码会被JSP引擎放入到Servlet的out.write()方法中。
而在Servlet中我们需要自己通 过对字符流输出流的操作生成响应的页面。
JSP更擅长表现于页面显示,Servlet更擅长于逻辑控制。
4.请求转发
request.getRequestDispatcher("/XXX.jsp").forword(req,resp );
5.请求转发与重定向的区别
请求转发对于客户端浏览器而言是在一次请求与响应中完成,而重定向是在两次请求两次响应中完
成。
请求转发并不会改变客户端浏览器的地址栏中的内容。而重定向会改变客户端浏览器地址栏中的内
容。
请求转发可以使用request对象传递数据,而重定向不能使用request对象传递数据。
6.JSP中的四大作用域对象
作用域:“数据共享的范围”,也就是说数据能够在多大的范围内有效。
实体类
@Data @AllArgsConstructor @NoArgsConstructor @Builder public class BrandModel { private Integer id; private String name; private String enterprise; private Integer sort; private String introduction; private Integer status;
}
@WebServlet("/show") public class ShowServlet extends HttpServlet { //把元素放到BrandService List<BrandModel> brandModels=new ArrayList<>(); @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // List<BrandModel> brandModels=new ArrayList<>(); for (int i = 0; i < 3; i++) { BrandModel model = new BrandModel(); //赋值 model.setId(1); model.setName("加油"); model.setEnterprise("加油"); model.setIntroduction("加油"); // model.setStatus(1); model.setStatus(1); brandModels.add(model); } // for (int i = 0; i < brandModels.size(); i+=2) { // // } //查询元素 BrandService brandService=new BrandService(); brandModels=brandService.findAll(); //前端就可以拿到后端传过来的值 req.setAttribute("brandModels",brandModels); req.getRequestDispatcher("/show.jsp").forward(req,resp); } }
添加,查询
public class BrandService { // private List<BrandModel> brandModels=new ArrayList<>(); /** * 增加品牌 * @param brandModel * @return */ public String add(BrandModel brandModel) { // brandModels.add(brandModel); brandModel.setId(BrandDao.brandModels.size()+1);//加序号 BrandDao.brandModels.add(brandModel); return "success"; } /** * 查找品牌 * @return */ public List<BrandModel> findAll() { return BrandDao.brandModels; } } dao
public class BrandDao { public static List<BrandModel> brandModels=new ArrayList<>(); }
工具类
public class Tool { private Tool(){ } public static Integer strToInt(String value){ // Integer intSort=0; try { return Integer.valueOf(value); }catch (Exception e){ } return -1; } }
9.添加
@WebServlet("/add") public class AddServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding(StandardCharsets.UTF_8.toString()); resp.setCharacterEncoding(StandardCharsets.UTF_8.toString()); String name = req.getParameter("name"); String enterprise = req.getParameter("enterprise"); String sort = req.getParameter("sort"); String introduction = req.getParameter("introduction"); String status = req.getParameter("status"); //封装数据到mode // Integer intSort=0; // try { // intSort=Integer.valueOf(sort); // }catch (Exception e){ // // } // Tool tool = new Tool(); BrandModel brandModel=BrandModel .builder() .name(name) .enterprise(enterprise) .sort(Tool.strToInt(sort)) .introduction(introduction) .status(Tool.strToInt(status)) .build(); //处理逻辑关系 BrandService brandService = new BrandService(); // int result =brandService.add(brandModel); //返回给前端 String result =brandService.add(brandModel); //转发数据 // if (true){ // resp.sendRedirect("/success.jsp"); resp.sendRedirect("/show"); // // }else { // resp.sendRedirect("/error.jsp"); // } // req.setAttribute("result",result); // req.getRequestDispatcher("/success.jsp").forward(req,resp); } }
10.修改
@WebServlet("/update") public class UpdateServlet extends HttpServlet { @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { String sort = req.getParameter("sort"); BrandModel brandModel=new BrandModel(); brandModel.setSort(Tool.strToInt(sort)); } }