项目:ht为了防止tp:/和谐/yun.baidu.co请去掉m/share/汉字link?shareid=446316952&uk=6726421102014年12月9日星期二(jfinal)今天是第一天入职,学习jfinal从表中可以看出,JFinal访问一个确切的Action(Action定义见 3.2节)需要使用controllerKey与method 来精确定位,当method 省略时默认值为index。
urlPara 是为了能在url 中携带参数值,urlPara 可以在一次请求中同时携带多个值,JFinal 默认使用减号“-”来分隔多个值(可通过constants. setUrlParaSeparator(String)设置分隔符),在Controller 中可以通过getPara(int index)分别取出这些值。
controllerKey、method、urlPara这三部分必须使用正斜杠“/”分隔。
注意,controllerKey 自身也可以包含正斜杠“/”,如“/admin/article”,这样实质上实现了struts2的namespace功能。
记忆技巧:第一个参数为String 类型的将获取表单或url 中问号挂参的域值。
第一个参数为int 或无参数的将获取urlPara 中的参数值。
2014年12月10日星期三1.注意打字质量,几次打错字而出错!2.理清逻辑思路,居然出现没有配置web.xml3.对陌生的质疑使我畏葸不前,要自信!1.关于add1.首先,页面是添加<form action="/student/save"method="post">姓名:<input type="text"name="student.studentname"/>${studentnameMsg!}${studentnameLMsg!} </form>2.到web.xml<filter><filter-name>jfinal</filter-name><filter-class>com.jfinal.core.JFinalFilter</filter-class><init-param><param-name>configClass</param-name><param-value>com.demo.config.DemonConfig</param-value> </init-param></filter><filter-mapping><filter-name>jfinal</filter-name><url-pattern>/*</url-pattern></filter-mapping>3.到demonconfig/*** 配置路由*/public void configRoute(Routes me) {me.add("/", StudentController.class);me.add("/student", StudentController.class);//me.add("/classes", StudentController.class);}4.到StudentController的save方法@Before(StudentValidator.class)public void save() {Student student = getModel(Student.class);student.save();forwardAction("/student");}5.被StudentValidator拦截protected void validate(Controller c) {// 验证表单域name,返回信息key,返回信息valuevalidateRequiredString("student.studentname", "studentnameMsg", "请输入学生名册");这里也可以用正则验证!validateRegex(field, regExpression, errorKey, errorMessage)}6.反馈7.转回/student,无参调用index()方法@Before(StudentInterceptor.class)public void index() {List<Student> list = Student.dao.find("select * from student");System.out.println(list);setAttr("studentList", list);render("/index.html");}8.被StudentInterceptor拦截public class StudentInterceptor implements Interceptor {public void intercept(ActionInvocation ai) {System.out.println("Before action invoking");ai.invoke();System.out.println("After action invoking");}}9.执行后render("/index.html");10.到index页面<#list studentList as student><tr><td> ${student.studentname} </td><td> ${student.studentage}</td><td> ${student.studentsex} </td><td>${student.getClasses().classesname} </td><td> <a href="/student/delete/${student.studentid}">删除</a> <a href="/student/get/${student.studentid}">修改</a> </td></tr></#list>2.关于delete1.在页面传值<a href="/student/delete/${student.studentid}">删除</a>2.同添加一样,转到StudentController的delete方法public void delete() {//获取表单域名为studentID的值//Student.dao.deleteById(getPara("studentID"));//获取url请求中第一个值Student.dao.deleteById(getParaToInt());forwardAction("/student");}3.关于update1.页面传值<a href="/student/get/${student.studentid}">修改</a>2.同添加一样,转到StudentController的get方法public void get() {Student student = Student.dao.findById(getParaToInt());setAttr("student", student);render("/index2.html");}3.转到index2,提取修改的内容<form action="/student/update"method="post"><input type="text"name="student.studentid"value="${student.studentid}"/>姓名:<input type="text"name="student.studentname"value="${student.studentname}"/><br/>年龄:<input type="text"name="student.studentage"value="${student.studentage}"/><br/>性别:<input type="text"name="student.studentsex"value="${student.studentsex}"/><br/>班级:<input type="text"name="student.classesid"value="${student.classesid}"/><br/><input type="submit"value="保存"/></form>4.提交到StudentController的update()方法public void update() {Student student = getModel(Student.class);student.update();forwardAction("/student");}4.设置view视图为JSPpublic void configConstant(Constants me) {me.setDevMode(true);me.setViewType(ViewType.JSP);}5.访问路径,同struts的命名空间/*** 配置路由*/public void configRoute(Routes me) {me.add("/", StudentController.class);me.add("/student", StudentController.class);//me.add("/classes", ClassController.class);}注解ActionKey(“/add”)将打破原有路由,可以直接访问/add,而不是/student/add @ActionKey("/add")public void add() {render("/add.html");}2014年12月11日星期四使用jfinal放到tomcat运行出错!1.MyEclipse中tomcat启动错误;原因是没有为tomcat 配置JDK2.在发布的项目里要写绝对路径,不然出现资源找不到错误1.开始使用jfinal自带服务是这样的<a href="/student/add">添加</a>2.删掉自带服务,放进tomcat后要配置路径<a href="${contextPath}/student/add">添加</a>3.需要在config里配置上下文路径public void configHandler(Handlers me) {me.add(new ContextPathHandler("contextPath"));//设置上下文路径}3.对映射路径的理解在访问index()方法时,里面可以使用render系列方法,这时候就要考虑到路径的问题。