JSF学习

版权声明:本文为博主原创文章,非商用转载请注明出处: https://blog.csdn.net/qq_17058993/article/details/84166079

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、页面跳转

猜你喜欢

转载自blog.csdn.net/qq_17058993/article/details/84166079
jsf