JSFDemo下载:JSF框架的demo项目 (注意Demo有错 <verify方法> ,JSF根本无法跳转,修改如下)
安装好Demo跑起来,查看代码
跟着学习 JSF入门实例
1、JSF Demo 目录
2、JSF Demo项目部署在Tomact
修改配置tomact版本 jdk版本
tomact的端口修改 Eclipse中重新删除server 重新配置server 不然还是提示端口占用
项目左下角有红色叉号 但是项目中没发现错误的时候 记得打开promble 视图窗口 问题一目了然
3、Demo中的页面无法跳转,需要修改 UserBean(JSF2.0之前的)
package jsf_demo.bean;
public class UserBean {
private String name;
private String password;
private String errorMsg;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getErrorMsg() {
return errorMsg;
}
public void setErrorMsg(String errorMsg) {
this.errorMsg = errorMsg;
}
public String verify(){
/*if(name == null || password == null){
errorMsg = "用户名或密码为空";
return "error";
}else if(name != "root" || password != "123"){
errorMsg = "用户名或密码错误";
return "error";
}else{
errorMsg = "用户名或密码正确";
return "success";
}*/
if (name.equals("root") && password.equals("123")) {
errorMsg = "用户名或密码正确";
return "success";
}else if (name.equals("")|| password.equals("")) {
errorMsg = "用户名或密码为空";
return "error";
}else {
errorMsg = "用户名或密码错误";
return "error";
}
}
}
4、index.jsp修改,更易于实时查看状态值 welcome.jsp 未修改这里不贴了
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>This is my jsf application</title>
</head>
<body>
<f:view>
<h:form>
<h3>请输入用户名:</h3>
用户名:<h:inputText value="#{user.name}"></h:inputText>
密 码:<h:inputText value="#{user.password}"></h:inputText>
<p>
<h:commandButton value="登陆" action="#{user.verify}" />
</p>
<p>
name:<h:outputText value="#{user.name}"/>
</p>
<p>
password:<h:outputText value="#{user.password}"/>
</p>
<p>
errorMsg:<h:outputText value="#{user.errorMsg}"/>
</p>
</h:form>
</f:view>
</body>
</html>
5、JSF必须的几个jar包
在哪下载?说实话 零零碎碎的 还真没找到官方下载的地址,下面这几个是JSf2.0的 学习2.0的bean依赖注入
下载地址:https://download.csdn.net/download/a8497672/10404684
6、faces-config.xml 必须的固定格式(JSF2.0之前的,xml配置托管Bean)
为了让JSF知道我们所设计的Bean以及页面流程,我们定义一个/WEB-INF/faces-config.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
<navigation-rule>
<from-view-id>/pages/index.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/pages/welcome.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>error</from-outcome>
<to-view-id>/pages/index.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>user</managed-bean-name>
<managed-bean-class>
jsf_demo.bean.UserBean
</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
7、web.xml
使用JSF时,所有的请求都通过FacesServlet来处理
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
id="WebApp_ID" version="3.1">
<display-name>jsf_demo</display-name>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>FacesServlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>FacesServlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
</web-app>
在上面的定义中,我们将所有.faces的请求交由FaceServlet来处理,FaceServlet会唤起相对的.jsp网页,例如请求是/index.faces的话,则实际上会唤起/index.jsp网页,完成以上的配置,您就可以开始使用JSF了。
8、出现此问题的原因是访问路径不正确:
http://localhost:8081/jsf_demo/pages/index.jsp
javax.servlet.ServletException: Cannot find FacesContext
解决的方法是输入web.xml配置文件当中正确的Servlet映射关系
如:<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.faces</url-pattern>
</servlet-mapping>
访问路径则为:http://localhost:8081/jsf_demo/pages/index.faces
9、页面跳转