1.jsp运行原理
jSP
和
Servlet
是本质相同的技术。当一个
JSP
文件第一次被请求时, JSP引擎会将该JSP
编译成一个
Servlet
,并执行这个
Servlet
。如果
JSP文件被修改了,那么JSP
引擎会重新编译这个
JSP
。 JSP引擎对
JSP
编译时会生成两个文件分别是
.java
的源文件以及编译后的.class
文件,并放到
Tomcat
的
work
目录的
Catalina
对应的虚拟主机目录中的org\apache\jsp
目录中。两个文件的名称会使用
JSP
的名称加”_jsp”
表示。
2.
JSP
与
Servlet
区别
1)JSP
以源文件形式部署到容器中。而
Servlet
需要编译成
class
文件后部署到容器中。
2)JSP
部署到
web
项目的根目录下或根目录下的其他子目录和静态同资源位于相同位置。而
Servlet
需要部署到WEB-INF/classes
目录中。
3)JSP
中的
HTML
代码会被
JSP
引擎放入到
Servlet
的
out.write()
方法中。而在
Servlet
中我们需要自己通过对字符流输出流的操作生成响应的页面。
4)JSP
更擅长表现于页面显示,
Servlet
更擅长于逻辑控制。
3.
请求转发
request.getRequestDispatcher("/test.jsp").forword(request,response);
4.实体类
@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;
}
5.
@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); } }
6.添加,查询
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; } }
7.dao
public class BrandDao { public static List<BrandModel> brandModels=new ArrayList<>(); }
8.工具类
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)); } }
11.里面的逻辑问题还得加深一下