ThymeLeaf
- 在html页面上加载java内存中的数据的过程称为渲染(render)。
概念:thymeleaf是用于实现视图渲染的技术
实现步骤
①添加thymeleaf包
②新建ViewBaseServlet类(名字不是固定的,可以随便取得)继承HttpServlet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55
| public class ViewBaseServlet extends HttpServlet {
private TemplateEngine templateEngine;
@Override public void init() throws ServletException {
ServletContext servletContext = this.getServletContext();
ServletContextTemplateResolver templateResolver = new ServletContextTemplateResolver(servletContext);
templateResolver.setTemplateMode(TemplateMode.HTML);
String viewPrefix = servletContext.getInitParameter("view-prefix");
templateResolver.setPrefix(viewPrefix);
String viewSuffix = servletContext.getInitParameter("view-suffix");
templateResolver.setSuffix(viewSuffix);
templateResolver.setCacheTTLMs(60000L);
templateResolver.setCacheable(true);
templateResolver.setCharacterEncoding("utf-8");
templateEngine = new TemplateEngine();
templateEngine.setTemplateResolver(templateResolver);
}
protected void processTemplate(String templateName, HttpServletRequest req, HttpServletResponse resp) throws IOException { resp.setContentType("text/html;charset=UTF-8");
WebContext webContext = new WebContext(req, resp, getServletContext());
templateEngine.process(templateName, webContext, resp.getWriter()); } }
|
③在web.xml文件中添加配置
在xml中配置上下文参数:
1 2 3 4 5 6 7 8 9
| <context-param> <param-name>view-prefix</param-name> <param-value>/</param-value> </context-param> <context-param> <param-name>view-suffix</param-name> <param-value>.html</param-value> </context-param>
|
④将实际上执行方法的servlet继承ViewBaseServlet
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| public class FruitServlet extends ViewBaseServlet {
@Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { FruitDao fruitDao = new FruitDaoImpl(); List<Fruit> fruitList = fruitDao.getFruitList();
HttpSession session = req.getSession(); session.setAttribute("fruitList",fruitList);
super.processTemplate("index",req,resp); } }
|
Vue
{{}} - 相当于innerText
v-bind:attr 绑定属性值。例如,v-bind:value - 绑定value值,可以简写: :value
v-model 双向绑定。例如,v-model:value , 简写 v-model
v-if , v-else , v-show
v-if和v-else之间不能有其他的节点
v-show是通过样式表display来控制节点是否显示
v-for 迭代,v-for={fruit in fruitList}
v-on 绑定事件,例如,v-on:click=”test”,可以简写了@click=“test”
其他:
- trim:去除首尾空格 , split() , join()
- watch表示侦听属性
- 生命周期
Axios
axios是Ajax的一个框架,简化Ajax的操作
属性名 |
作用 |
config |
调用axios(config对象)方法时传入的JSON对象 |
data |
服务器端返回的响应体数据 |
headers |
响应消息头 |
request |
原生JavaScript执行Ajax操作时使用的XMLHttpRequest |
status |
响应状态码 |
statusText |
响应状态码的说明文本 |
axios实现AJax的操作:
在引入axios的js文件后
基本格式: axios().then().catch()
①发送普通参数axios内为method、url、params
②发送json格式数据axios内method、url、data
在axios的异步请求中
①当method=post的时候,可以选择使用data或者param
使用param的情况
若使用Map接收参数,必须使用 @RequestParam 修饰。
但是如果想传list类型的数据,需要使用单独的方法处理。
使用data的情况
必须使用一个实体类接收参数,而且需要添加注解 @RequestBody 进行修饰。
②当method=get的时候,只能使用param,原因是get中没有data方式
1.客户端向服务器端异步发送普通参数值
1 2 3 4 5 6 7 8 9 10 11 12 13
| axios({ method:"POST", url:"....", params:{ uname:"lina", pwd:"ok" } }) .then(function(value){}) .catch(function(reason){});
|
2.客户端向服务器发送JSON格式的数据
前端vue+axios代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| "methods":{ "requestBodyJSON":function () { axios({ "method":"post", "url":"/demo/AjaxServlet?method=requestBodyJSON", "data":{ "stuId": 55, "stuName": "tom", "subjectList": [ { "subjectName": "java", "subjectScore": 50.55 }, { "subjectName": "php", "subjectScore": 30.26 } ], "teacherMap": { "one": { "teacherName":"tom", "tearcherAge":23 }, "two": { "teacherName":"jerry", "tearcherAge":31 }, }, } }).then(function (response) { console.log(response); }).catch(function (error) { console.log(error); }); } }
|
后端服务器代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| protected void requestBodyJSON(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
BufferedReader reader = request.getReader();
StringBuilder builder = new StringBuilder();
String bufferStr = null;
while((bufferStr = reader.readLine()) != null) { builder.append(bufferStr); }
reader.close();
String requestBody = builder.toString();
Gson gson = new Gson();
Student student = gson.fromJson(requestBody, Student.class); System.out.println("student = " + student);
System.out.println("requestBody = " + requestBody);
response.setContentType("text/html;charset=UTF-8"); response.getWriter().write("服务器端返回普通文本字符串作为响应"); }
|